From 99860785829b6162eb0da2661e1cae93853c1745 Mon Sep 17 00:00:00 2001 From: Kelvin Date: Sat, 3 May 2025 19:30:47 +0200 Subject: [PATCH] Fix sync crash and responsiveness for subs sync --- .../com/futo/platformplayer/states/StateSync.kt | 14 ++++++++------ .../views/adapters/SubscriptionAdapter.kt | 5 +++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/futo/platformplayer/states/StateSync.kt b/app/src/main/java/com/futo/platformplayer/states/StateSync.kt index 98c7f8e9..845359b7 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StateSync.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StateSync.kt @@ -548,7 +548,7 @@ class StateSync { added.map { it.channel.name }.joinToString("\n")); - if(pack.subscriptions.isNotEmpty()) { + if(pack.subscriptionRemovals.isNotEmpty()) { for (subRemoved in pack.subscriptionRemovals) { val removed = StateSubscriptions.instance.applySubscriptionRemovals(pack.subscriptionRemovals); if(removed.size > 3) { @@ -645,12 +645,14 @@ class StateSync { val subPackage = Serializer.json.decodeFromString(json); handleSyncSubscriptionPackage(session, subPackage); - val newestSub = subPackage.subscriptions.maxOf { it.creationTime }; + if(subPackage.subscriptions.size > 0) { + val newestSub = subPackage.subscriptions.maxOf { it.creationTime }; - val sesData = getSyncSessionData(remotePublicKey); - if(newestSub > sesData.lastSubscription) { - sesData.lastSubscription = newestSub; - saveSyncSessionData(sesData); + val sesData = getSyncSessionData(remotePublicKey); + if (newestSub > sesData.lastSubscription) { + sesData.lastSubscription = newestSub; + saveSyncSessionData(sesData); + } } } diff --git a/app/src/main/java/com/futo/platformplayer/views/adapters/SubscriptionAdapter.kt b/app/src/main/java/com/futo/platformplayer/views/adapters/SubscriptionAdapter.kt index ef3f7cb0..33783e67 100644 --- a/app/src/main/java/com/futo/platformplayer/views/adapters/SubscriptionAdapter.kt +++ b/app/src/main/java/com/futo/platformplayer/views/adapters/SubscriptionAdapter.kt @@ -37,9 +37,10 @@ class SubscriptionAdapter : RecyclerView.Adapter { _onDatasetChanged = onDatasetChanged; StateSubscriptions.instance.onSubscriptionsChanged.subscribe { _, _ -> if(Looper.myLooper() != Looper.getMainLooper()) - StateApp.instance.scopeOrNull?.launch(Dispatchers.IO) { updateDataset() } + StateApp.instance.scopeOrNull?.launch(Dispatchers.Main) { updateDataset() } else - updateDataset(); } + updateDataset(); + } updateDataset(); }