From 9fa96125b2e548aecef39a20ab8e7ff0ccd3b497 Mon Sep 17 00:00:00 2001 From: daplugg23 Date: Tue, 14 Apr 2026 19:52:31 -0500 Subject: [PATCH] fix: resolve dropped friends list by properly handling chunked social snapshots The social snapshot chunking mechanism (introduced in v1.6.2) split the friends list correctly on the BridgeClient, but the BridgeService was discarding subsequent chunks. This updates the Manager to explicitly process and combine all received chunks via the database before updating the AddFriendDialog UI. --- .../kotlin/me/eternal/purrfectsnap/bridge/BridgeService.kt | 1 - .../kotlin/me/eternal/purrfectsnap/storage/Messaging.kt | 5 +++++ .../purrfectsnap/ui/manager/pages/social/AddFriendDialog.kt | 6 +----- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/kotlin/me/eternal/purrfectsnap/bridge/BridgeService.kt b/app/src/main/kotlin/me/eternal/purrfectsnap/bridge/BridgeService.kt index 9d56d813..83b87b4d 100644 --- a/app/src/main/kotlin/me/eternal/purrfectsnap/bridge/BridgeService.kt +++ b/app/src/main/kotlin/me/eternal/purrfectsnap/bridge/BridgeService.kt @@ -229,7 +229,6 @@ class BridgeService : Service() { pendingSocialSnapshotCallback?.let { callback -> pendingSocialSnapshotCallback = null callback(parsedFriends, parsedGroups) - return } remoteSideContext.database.replaceMessagingData(parsedFriends, parsedGroups) remoteSideContext.database.receiveMessagingDataCallback(parsedFriends, parsedGroups) diff --git a/app/src/main/kotlin/me/eternal/purrfectsnap/storage/Messaging.kt b/app/src/main/kotlin/me/eternal/purrfectsnap/storage/Messaging.kt index 020c4f21..703a548f 100644 --- a/app/src/main/kotlin/me/eternal/purrfectsnap/storage/Messaging.kt +++ b/app/src/main/kotlin/me/eternal/purrfectsnap/storage/Messaging.kt @@ -138,6 +138,11 @@ fun AppDatabase.replaceMessagingData( } finally { database.endTransaction() } + + // Notify with the full updated list from the DB + val allFriends = getFriends(descOrder = true) + val allGroups = getGroups() + receiveMessagingDataCallback(allFriends, allGroups) } } diff --git a/app/src/main/kotlin/me/eternal/purrfectsnap/ui/manager/pages/social/AddFriendDialog.kt b/app/src/main/kotlin/me/eternal/purrfectsnap/ui/manager/pages/social/AddFriendDialog.kt index dd7920e4..678d3047 100644 --- a/app/src/main/kotlin/me/eternal/purrfectsnap/ui/manager/pages/social/AddFriendDialog.kt +++ b/app/src/main/kotlin/me/eternal/purrfectsnap/ui/manager/pages/social/AddFriendDialog.kt @@ -256,11 +256,7 @@ class AddFriendDialog( ) } - if (context.bridgeService != null) { - context.bridgeService?.requestEphemeralSocialSnapshot(updateSnapshot) - } else { - context.database.receiveMessagingDataCallback = updateSnapshot - } + context.database.receiveMessagingDataCallback = updateSnapshot context.requestSocialSnapshotRefresh() coroutineScope.launch(Dispatchers.IO) {