From 5228c19c1bbc8513bf3868e1b6f2bd7da56ef603 Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Fri, 9 Jan 2026 23:51:16 +0700 Subject: [PATCH] fix: unconditionally update mesh reference in MessageRouter.getInstance --- .../bitchat/android/services/MessageRouter.kt | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/bitchat/android/services/MessageRouter.kt b/app/src/main/java/com/bitchat/android/services/MessageRouter.kt index 671bf62f..a6bac09a 100644 --- a/app/src/main/java/com/bitchat/android/services/MessageRouter.kt +++ b/app/src/main/java/com/bitchat/android/services/MessageRouter.kt @@ -19,23 +19,22 @@ class MessageRouter private constructor( @Volatile private var INSTANCE: MessageRouter? = null fun tryGetInstance(): MessageRouter? = INSTANCE fun getInstance(context: Context, mesh: BluetoothMeshService): MessageRouter { - return INSTANCE ?: synchronized(this) { - val nostr = NostrTransport.getInstance(context) - INSTANCE?.also { - // Update mesh reference if needed and keep senderPeerID in sync - it.mesh = mesh - it.nostr.senderPeerID = mesh.myPeerID - return it - } - MessageRouter(context.applicationContext, mesh, nostr).also { instance -> - instance.nostr.senderPeerID = mesh.myPeerID - // Register for favorites changes to flush outbox - try { - com.bitchat.android.favorites.FavoritesPersistenceService.shared.addListener(instance.favoriteListener) - } catch (_: Exception) {} - INSTANCE = instance + val instance = INSTANCE ?: synchronized(this) { + INSTANCE ?: run { + val nostr = NostrTransport.getInstance(context) + MessageRouter(context.applicationContext, mesh, nostr).also { instance -> + // Register for favorites changes to flush outbox + try { + com.bitchat.android.favorites.FavoritesPersistenceService.shared.addListener(instance.favoriteListener) + } catch (_: Exception) {} + INSTANCE = instance + } } } + // Always update mesh reference and sync peer ID + instance.mesh = mesh + instance.nostr.senderPeerID = mesh.myPeerID + return instance } }