diff --git a/app/src/main/java/com/chwl/app/avroom/dialog/RoomLuckyBagDialog.kt b/app/src/main/java/com/chwl/app/avroom/dialog/RoomLuckyBagDialog.kt index 1288e5434..b0c4ba487 100644 --- a/app/src/main/java/com/chwl/app/avroom/dialog/RoomLuckyBagDialog.kt +++ b/app/src/main/java/com/chwl/app/avroom/dialog/RoomLuckyBagDialog.kt @@ -508,6 +508,14 @@ class RoomLuckyBagDialog : BaseDialogFragment() { mPageManager?.scrollToPagerIndex(0) } + mGiftDataSelect.clear() + val iterator = mGiftDataSelectPos.iterator() + while (iterator.hasNext()) { + val next = iterator.next().value + if (next.count <= 0) { + iterator.remove() + } + } mIsGiftReview = false } @@ -527,7 +535,6 @@ class RoomLuckyBagDialog : BaseDialogFragment() { binding.redBagDesc.setPadding2(bottom = 0.toDP()) mGiftDataSelect.clear() - val iterator = mGiftDataSelectPos.iterator() while (iterator.hasNext()) { val next = iterator.next().value @@ -667,6 +674,7 @@ class RoomLuckyBagDialog : BaseDialogFragment() { if (!items.isVerify()) { R.string._ver_24_sentLuckyBagNoSelect.doToast() + isSenting = false return } diff --git a/app/src/main/java/com/chwl/app/home/fragment/HomeFragment.kt b/app/src/main/java/com/chwl/app/home/fragment/HomeFragment.kt index d0b6e55a0..9478688da 100644 --- a/app/src/main/java/com/chwl/app/home/fragment/HomeFragment.kt +++ b/app/src/main/java/com/chwl/app/home/fragment/HomeFragment.kt @@ -16,6 +16,7 @@ import com.chwl.app.ui.search.SearchActivity import com.chwl.app.ui.widget.magicindicator.ViewPagerHelper import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator import com.chwl.app.utils.HomeUIManager +import com.chwl.app.utils.RoomHelperManager import com.chwl.core.DemoCache /** @@ -39,11 +40,13 @@ class HomeFragment : BaseViewBindingFragment(), View.OnClic R.id.layout_title_bar->{ if (BuildConfig.DEBUG) { //todo do 测试代码 - context?.let { + context?.let { context-> - val i = 1/0 +// val i = 1/0 // DemoActivity.start(it) - RoomLuckyBagDialog().show(it) + RoomHelperManager.test { + RoomLuckyBagDialog().show(context) + } // R.string._ver_24_cpInRoomTips.getString("string-1", "string-2", "string-3").doToastDeBug() // R.string._ver_24_cpUpMicTips.getString("string-1", "string-2", "string-3").doToastDeBug() // GiftDialog(it,3224,false,false,false).show() diff --git a/app/src/main/java/com/chwl/app/pay/activity/GiveGoldActivity.kt b/app/src/main/java/com/chwl/app/pay/activity/GiveGoldActivity.kt index 8199aa4ea..e5073dd3b 100644 --- a/app/src/main/java/com/chwl/app/pay/activity/GiveGoldActivity.kt +++ b/app/src/main/java/com/chwl/app/pay/activity/GiveGoldActivity.kt @@ -145,6 +145,46 @@ class GiveGoldActivity : BaseViewBindingActivity() { } + UserModel.get().cacheLoginUserInfo?.let { user-> + binding.enbanNo.text = R.string.text_user_id.getString(user.erbanNo) + binding.charmLevel.load(user.userLevelVo?.charmUrl?:"") + binding.charmLevel.setVis(user.userLevelVo?.charmUrl.isVerify()) + binding.userLevel.load(user.userLevelVo?.experUrl?:"") + binding.charmLevel.setVis(user.userLevelVo?.experUrl.isVerify()) + binding.nick.text = user.nick + binding.avatar.loadAvatar(user.avatar) + } + + + + binding.arDetail.click { + GiveGoldBiliActivity.start(context) + } + binding.enDetail.click { + GiveGoldBiliActivity.start(context) + } + binding.agent.click { + GiveGoldAgentsActivity.start(context) + } + + } + + override fun onResume() { + super.onResume() + loadData(true) + GiftModel.get().requestKnapGiftInfos().subscribe() + loadUserCardInfo() + } + + @SuppressLint("CheckResult") + fun loadData(isRefresh: Boolean) { + binding.refreshLayout.isRefreshing = isRefresh + pageNum = if (isRefresh) 1 else (pageNum + 1) + giveGoldModel.getDiamondListInfo(pageNum, pageSize) + + } + + private fun loadUserCardInfo() { getRechargeUserInfo() .compose(bindToLifecycle()) .doOnSuccess { @@ -177,43 +217,6 @@ class GiveGoldActivity : BaseViewBindingActivity() { } }.subscribe() - - - UserModel.get().cacheLoginUserInfo?.let { user-> - binding.enbanNo.text = R.string.text_user_id.getString(user.erbanNo) - binding.charmLevel.load(user.userLevelVo?.charmUrl?:"") - binding.charmLevel.setVis(user.userLevelVo?.charmUrl.isVerify()) - binding.userLevel.load(user.userLevelVo?.experUrl?:"") - binding.charmLevel.setVis(user.userLevelVo?.experUrl.isVerify()) - binding.nick.text = user.nick - binding.avatar.loadAvatar(user.avatar) - } - - - - binding.arDetail.click { - GiveGoldBiliActivity.start(context) - } - binding.enDetail.click { - GiveGoldBiliActivity.start(context) - } - binding.agent.click { - GiveGoldAgentsActivity.start(context) - } - - } - - override fun onResume() { - super.onResume() - loadData(true) - GiftModel.get().requestKnapGiftInfos().subscribe() - } - - @SuppressLint("CheckResult") - fun loadData(isRefresh: Boolean) { - binding.refreshLayout.isRefreshing = isRefresh - pageNum = if (isRefresh) 1 else (pageNum + 1) - giveGoldModel.getDiamondListInfo(pageNum, pageSize) } override fun setStatusBar() { diff --git a/app/src/main/java/com/chwl/app/pay/activity/GiveGoldBiliActivity.kt b/app/src/main/java/com/chwl/app/pay/activity/GiveGoldBiliActivity.kt index 87668089d..4188a2b8e 100644 --- a/app/src/main/java/com/chwl/app/pay/activity/GiveGoldBiliActivity.kt +++ b/app/src/main/java/com/chwl/app/pay/activity/GiveGoldBiliActivity.kt @@ -49,14 +49,24 @@ class GiveGoldBiliActivity : BaseViewBindingActivity() private var mDataThisCycleGoldUs = mutableListOf() + private var mDataLastCycleGold = mutableListOf() private var mDataLastCycleGoldUs = mutableListOf() private var mPageNumThisCycleGold = 1 private var mPageNumThisCycleGoldUs = 1 + private var mPageNumLastCycleGold = 1 private var mPageNumLastCycleGoldUs = 1 + private var thisCycleTimeStr = "" + private var thisCycleGoldStr = "" + private var thisCycleGoldUsStr = "" + + private var lastCycleTimeStr = "" + private var lastCycleGoldStr = "" + private var lastCycleGoldUsStr = "" + override fun init() { initWhiteTitleBar(R.string._ver_23_Transfer_History.getString()) @@ -93,12 +103,25 @@ class GiveGoldBiliActivity : BaseViewBindingActivity): List { + private fun getData(list: List?,isRefresh:Boolean = false): List { val data = tranData(list) - if (mCycle == GiveGoldBiliEntity.Cycle.thisCycle) { if (mTabType == GiveGoldBiliEntity.TabType.gold) { - - if (data.isVerify()) { - if (mDataThisCycleGold.isVerify()) { - mDataThisCycleGold.addAll(data) - } else { - mDataThisCycleGold = data.toMutableList() + if (isRefresh) { + mDataThisCycleGold.clear() + }else{ + if (data.isVerify()) { + if (mDataThisCycleGold.isVerify()) { + mDataThisCycleGold.addAll(data) + } else { + mDataThisCycleGold = data.toMutableList() + } } } - return mDataThisCycleGold } else { - - if (data.isVerify()) { - if (mDataThisCycleGoldUs.isVerify()) { - mDataThisCycleGoldUs.addAll(data) - } else { - mDataThisCycleGoldUs = data.toMutableList() + if (isRefresh){ + mDataThisCycleGoldUs.clear() + }else{ + if (data.isVerify()) { + if (mDataThisCycleGoldUs.isVerify()) { + mDataThisCycleGoldUs.addAll(data) + } else { + mDataThisCycleGoldUs = data.toMutableList() + } } } - return mDataThisCycleGoldUs } } else { - if (mTabType == GiveGoldBiliEntity.TabType.gold) { - if (data.isVerify()) { - if (mDataLastCycleGold.isVerify()) { - mDataLastCycleGold.addAll(data) - } else { - mDataLastCycleGold = data.toMutableList() + if (isRefresh){ + mDataLastCycleGold.clear() + }else{ + if (data.isVerify()) { + if (mDataLastCycleGold.isVerify()) { + mDataLastCycleGold.addAll(data) + } else { + mDataLastCycleGold = data.toMutableList() + } } - } - return mDataLastCycleGold } else { - if (data.isVerify()) { - if (mDataLastCycleGoldUs.isVerify()) { - mDataLastCycleGoldUs.addAll(data) - } else { - mDataLastCycleGoldUs = data.toMutableList() + if (isRefresh){ + mDataLastCycleGoldUs.clear() + }else{ + if (data.isVerify()) { + if (mDataLastCycleGoldUs.isVerify()) { + mDataLastCycleGoldUs.addAll(data) + } else { + mDataLastCycleGoldUs = data.toMutableList() + } } } - return mDataLastCycleGoldUs } } } - private fun getPageNum(): Int { + private fun getPageNum(isRefresh: Boolean = false): Int { if (mCycle == GiveGoldBiliEntity.Cycle.thisCycle) { if (mTabType == GiveGoldBiliEntity.TabType.gold) { + if (isRefresh) mPageNumThisCycleGold = 1 return mPageNumThisCycleGold } else { + if (isRefresh) mPageNumThisCycleGoldUs = 1 return mPageNumThisCycleGoldUs } } else { if (mTabType == GiveGoldBiliEntity.TabType.gold) { + if (isRefresh) mPageNumLastCycleGold = 1 return mPageNumLastCycleGold } else { + if (isRefresh) mPageNumLastCycleGoldUs = 1 return mPageNumLastCycleGoldUs } } } - private fun tranData(list: List): MutableList { + private fun tranData(list: List?): MutableList { val data = mutableListOf() if (list.isVerify()) { - val group = list.groupBy { it.timeStr } + val group = list?.groupBy { it.timeStr } - group.forEach { (t, u) -> + group?.forEach { (t, u) -> u.filterIndexed { index, bean -> if (index == 0) { bean.isHead = true diff --git a/app/src/main/java/com/chwl/app/utils/RoomHelperManager.kt b/app/src/main/java/com/chwl/app/utils/RoomHelperManager.kt index 596496f79..bdf4f437d 100644 --- a/app/src/main/java/com/chwl/app/utils/RoomHelperManager.kt +++ b/app/src/main/java/com/chwl/app/utils/RoomHelperManager.kt @@ -107,6 +107,14 @@ object RoomHelperManager { .subscribe() } } + public fun test(run:(info:RoomLuckyBagInfo)->Unit) { + getRoomLuckyBagInfo(3224) + .doOnSuccess { + mLuckyBagConfig = it.redEnvelopeV2Config + run(it) + } + .subscribe() + } diff --git a/app/src/main/res/layout/item_give_gold_bili.xml b/app/src/main/res/layout/item_give_gold_bili.xml index ac4894f5f..27fca3b12 100644 --- a/app/src/main/res/layout/item_give_gold_bili.xml +++ b/app/src/main/res/layout/item_give_gold_bili.xml @@ -29,13 +29,17 @@ @@ -50,47 +54,51 @@ app:layout_constraintTop_toBottomOf="@id/nick" /> - + app:layout_constraintTop_toTopOf="@id/nick"> - + + + + + + app:layout_constraintEnd_toEndOf="@id/goldLayout" + app:layout_constraintTop_toBottomOf="@id/goldLayout" /> diff --git a/app/src/main/res/layout/list_item_dialog_gift.xml b/app/src/main/res/layout/list_item_dialog_gift.xml index 925af2251..85addb001 100644 --- a/app/src/main/res/layout/list_item_dialog_gift.xml +++ b/app/src/main/res/layout/list_item_dialog_gift.xml @@ -115,10 +115,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" - android:layout_marginEnd="@dimen/dp_4" - android:layout_marginTop="4dp" + android:layout_marginHorizontal="@dimen/dp_2" + android:layout_marginTop="2dp" android:gravity="center" - android:visibility="invisible" android:orientation="horizontal"> الرجاء اختيار الهدية أولا تسجيل الدخول بالمعرف تسجيل الدخول بالرسائل القصيرة + وكيل إعادة الشحن الفرعي + التحويلات الأخيرة + تحويل الكونزات + تحويل الراتب + عرض التفاصيل + السجل + التحويل + هذه الدورة + الدورة الأخيرة + إجمالي مبلغ تحويلات الكونزات + قائمة وكلاء إعادة الشحن الفرعيين + التحويل خلال الثلاثين يومًا الماضية + سجل التحويلات + "Settlement:%s ÜS " \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index e68a6346c..1f5fd3d78 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -5213,4 +5213,18 @@ Toplam imza alın, ilgili ödülü alın Lütfen önce bir hediye seçin Kimlik Girişi SMS Girişi + Alt Yükleme Temsilcisi + Son Transferler + Transfer Coins + ÜS Hesaplaşması + Ayrıntıları görüntüle + Geçmiş + Transfer + Bu Döngü + Son Döngü + Toplam Coin Transferi Miktarı + Alt Yükleme Temsilcisi Listesi + Geçmiş 30 gün içindeki transfer + Transfer Geçmişi + "Settlement:%s ÜS " diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index b4c45a8ac..6fd2e2d7d 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -5361,5 +5361,19 @@ 請先選擇禮物 ID 登入 SMS 登入 + 子代理 + 最近轉贈 + 轉贈金幣 + 代發薪資 + 詳情 + 歷史 + 轉贈 + 本週期 + 上週期 + 金幣轉贈 + 子代理列表 + 近30天轉贈 + 轉贈歷史 + "Settlement:%s ÜS " \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fc668a84f..6ca97f447 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5452,23 +5452,23 @@ You cannot join again within 24 hours after leaving SMS Login - sub recharge agent + Sub Recharge Agent Recent Transfers Transfer Coins - Us Settlement - View Details + ÜS Settlement + View details History Transfer This Cycle Last Cycle - Total Amount of Transfer Coins + Total Amount of Coin Transfers Sub Recharge Agent List Transfer Past 30 days Transfer History - Settlement:%s Us + "Settlement:%s ÜS " diff --git a/core/src/main/java/com/chwl/core/room/model/RoomBaseModel.java b/core/src/main/java/com/chwl/core/room/model/RoomBaseModel.java index 3347cc204..18b1c4ab8 100644 --- a/core/src/main/java/com/chwl/core/room/model/RoomBaseModel.java +++ b/core/src/main/java/com/chwl/core/room/model/RoomBaseModel.java @@ -370,7 +370,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { * 执行 : 上麦 */ private void doUpMicroPhone(final int micPosition, final String uId, final String roomId, boolean isInviteUpMic, final CallBack callBack, int teamId){ - MyUtil.INSTANCE.setUpMicIng(true); + MyUtil.INSTANCE.changeUpMicStatus(true); queryRoomMicInfo(roomId) .map(this::dealMicMemberFromIMNet) .flatMap(this::dealMicChatRoomMemberFromIMNet) @@ -378,6 +378,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { .doOnNext(roomQueueInfoSparseArray -> { RoomQueueInfo roomQueueInfo = roomQueueInfoSparseArray.get(micPosition); if (roomQueueInfo == null) { + MyUtil.INSTANCE.changeUpMicStatus(false); return; } MicMemberInfo chatRoomMember = roomQueueInfo.mChatRoomMember; @@ -385,6 +386,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { if (chatRoomMember != null) { SingleToastUtil.showToast(ResUtil.getString(R.string.room_model_roombasemodel_01)); callBack.onFail(CODE_UPDATE_MIC, ResUtil.getString(R.string.room_model_roombasemodel_02)); + MyUtil.INSTANCE.changeUpMicStatus(false); return; } //坑上没人且没锁 @@ -396,13 +398,13 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { @Override public void onSuccess(String data) { callBack.onSuccess(data); - MyUtil.INSTANCE.setUpMicIng(false); + MyUtil.INSTANCE.changeUpMicStatus(false); } @Override public void onFail(int code, String error) { callBack.onFail(code, error); - MyUtil.INSTANCE.setUpMicIng(false); + MyUtil.INSTANCE.changeUpMicStatus(false); } }; @@ -425,6 +427,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { } public void onFail(int code, String error) { callBackTmp.onFail(-1, ResUtil.getString(R.string.room_model_roombasemodel_03)); + MyUtil.INSTANCE.changeUpMicStatus(false); } }); } @@ -436,7 +439,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { }) .doOnError(throwable -> { - MyUtil.INSTANCE.setUpMicIng(false); + MyUtil.INSTANCE.changeUpMicStatus(false); }) .subscribe(); } diff --git a/core/src/main/java/com/chwl/core/utils/myutil/MyUtil.kt b/core/src/main/java/com/chwl/core/utils/myutil/MyUtil.kt index 3c305d2f1..5bd746ab3 100644 --- a/core/src/main/java/com/chwl/core/utils/myutil/MyUtil.kt +++ b/core/src/main/java/com/chwl/core/utils/myutil/MyUtil.kt @@ -1,6 +1,7 @@ package com.chwl.core.utils.myutil import android.view.View +import com.chwl.library.common.util.doLog object MyUtil { var mAppWidth = 0 @@ -9,6 +10,10 @@ object MyUtil { var upMicIng = false var downMicNum = 0 //需要下麦的 计数 + fun changeUpMicStatus(isUpMic: Boolean) { + upMicIng = isUpMic + "上麦 上麦状态 设置 upMicIng = $upMicIng".doLog() + } fun initAppWidth(view: View?) { view?.post { diff --git a/mode.json b/mode.json index 352db972c..6296f99cd 100644 --- a/mode.json +++ b/mode.json @@ -1,32 +1,122 @@ -{ - "code": 200, - "message": "success", - "data": { - "cycleDateStr": "2025-02-16 00:00:00~2025-02-25 13:37:30", - "totalGiveGoldUsd": -6.0, - "totalGiveGold": 360, - "diamondGiveHistoryVoList": [ - { - "targetUid": 3207, - "targetErbanNo": 993, - "targetNick": "总舵主", - "targetAvatar": "https://image.pekolive.com/image/dfcc5d56a064e0eae829d61c1a24fbf2.jpeg", - "diamondNum": 35000, - "createTime": 1740479827000, - "createTimeStr": "2025-02-25 13:37:07", - "guildUsdNum": -5.00 - }, - { - "targetUid": 3207, - "targetErbanNo": 993, - "targetNick": "总舵主", - "targetAvatar": "https://image.pekolive.com/image/dfcc5d56a064e0eae829d61c1a24fbf2.jpeg", - "diamondNum": 7000, - "createTime": 1740479819000, - "createTimeStr": "2025-02-25 13:36:59", - "guildUsdNum": -1.00 - } - ] +[ + { + "code": 200, + "message": "success", + "data": { + "cycleDateStr": "2025-02-16 00:00:00~2025-02-26 18:39:30", + "totalGiveGoldUsd": 0.0, + "totalGiveGold": 40000, + "diamondGiveHistoryVoList": [ + { + "id": 1894694777146396674, + "fromUid": 3469, + "targetUid": 3476, + "targetErbanNo": 644, + "targetNick": "英文区", + "targetAvatar": "https://img.molistar.xyz/default_avatar_molistar.png", + "diamondNum": 10000, + "realDiamondNum": 10000.0, + "createTime": 1740565411000, + "createTimeStr": "2025-02-26 18:23:31" + }, + { + "id": 1894694309158539265, + "fromUid": 3469, + "targetUid": 3461, + "targetErbanNo": 622, + "targetNick": "有个好听的名字叫做", + "targetAvatar": "https://image.pekolive.com/image/668c4b1f5bf4db80a49f5eca7b996bed.jpeg", + "diamondNum": 10000, + "realDiamondNum": 10000.0, + "createTime": 1740565300000, + "createTimeStr": "2025-02-26 18:21:40" + }, + { + "id": 1894694198206615554, + "fromUid": 3469, + "targetUid": 3459, + "targetErbanNo": 611, + "targetNick": "好听点", + "targetAvatar": "https://image.pekolive.com/8fc197d7-e481-491d-8315-5b6e44264f5c.jpeg", + "diamondNum": 10000, + "realDiamondNum": 10000.0, + "createTime": 1740565273000, + "createTimeStr": "2025-02-26 18:21:13" + }, + { + "id": 1894694133983432705, + "fromUid": 3469, + "targetUid": 3459, + "targetErbanNo": 611, + "targetNick": "好听点", + "targetAvatar": "https://image.pekolive.com/8fc197d7-e481-491d-8315-5b6e44264f5c.jpeg", + "diamondNum": 10000, + "realDiamondNum": 10000.0, + "createTime": 1740565258000, + "createTimeStr": "2025-02-26 18:20:58" + } + ] + }, + "timestamp": 1740566370253 }, - "timestamp": 1740479850715 -} + { + "code": 200, + "message": "success", + "data": { + "cycleDateStr": "2025-02-01 18:39:54~2025-02-15 23:59:59", + "totalGiveGoldUsd": 0.0, + "totalGiveGold": 40000, + "diamondGiveHistoryVoList": [ + { + "id": 1894694777146396674, + "fromUid": 3469, + "targetUid": 3476, + "targetErbanNo": 644, + "targetNick": "英文区", + "targetAvatar": "https://img.molistar.xyz/default_avatar_molistar.png", + "diamondNum": 10000, + "realDiamondNum": 10000.0, + "createTime": 1740565411000, + "createTimeStr": "2025-02-26 18:23:31" + }, + { + "id": 1894694309158539265, + "fromUid": 3469, + "targetUid": 3461, + "targetErbanNo": 622, + "targetNick": "有个好听的名字叫做", + "targetAvatar": "https://image.pekolive.com/image/668c4b1f5bf4db80a49f5eca7b996bed.jpeg", + "diamondNum": 10000, + "realDiamondNum": 10000.0, + "createTime": 1740565300000, + "createTimeStr": "2025-02-26 18:21:40" + }, + { + "id": 1894694198206615554, + "fromUid": 3469, + "targetUid": 3459, + "targetErbanNo": 611, + "targetNick": "好听点", + "targetAvatar": "https://image.pekolive.com/8fc197d7-e481-491d-8315-5b6e44264f5c.jpeg", + "diamondNum": 10000, + "realDiamondNum": 10000.0, + "createTime": 1740565273000, + "createTimeStr": "2025-02-26 18:21:13" + }, + { + "id": 1894694133983432705, + "fromUid": 3469, + "targetUid": 3459, + "targetErbanNo": 611, + "targetNick": "好听点", + "targetAvatar": "https://image.pekolive.com/8fc197d7-e481-491d-8315-5b6e44264f5c.jpeg", + "diamondNum": 10000, + "realDiamondNum": 10000.0, + "createTime": 1740565258000, + "createTimeStr": "2025-02-26 18:20:58" + } + ] + }, + "timestamp": 1740566394348 + } +] \ No newline at end of file