fix: unconditionally update mesh reference in MessageRouter.getInstance

This commit is contained in:
callebtc
2026-01-09 23:51:16 +07:00
parent 86134d3248
commit 5228c19c1b
@@ -19,23 +19,22 @@ class MessageRouter private constructor(
@Volatile private var INSTANCE: MessageRouter? = null @Volatile private var INSTANCE: MessageRouter? = null
fun tryGetInstance(): MessageRouter? = INSTANCE fun tryGetInstance(): MessageRouter? = INSTANCE
fun getInstance(context: Context, mesh: BluetoothMeshService): MessageRouter { fun getInstance(context: Context, mesh: BluetoothMeshService): MessageRouter {
return INSTANCE ?: synchronized(this) { val instance = INSTANCE ?: synchronized(this) {
val nostr = NostrTransport.getInstance(context) INSTANCE ?: run {
INSTANCE?.also { val nostr = NostrTransport.getInstance(context)
// Update mesh reference if needed and keep senderPeerID in sync MessageRouter(context.applicationContext, mesh, nostr).also { instance ->
it.mesh = mesh // Register for favorites changes to flush outbox
it.nostr.senderPeerID = mesh.myPeerID try {
return it com.bitchat.android.favorites.FavoritesPersistenceService.shared.addListener(instance.favoriteListener)
} } catch (_: Exception) {}
MessageRouter(context.applicationContext, mesh, nostr).also { instance -> INSTANCE = 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
} }
} }
// Always update mesh reference and sync peer ID
instance.mesh = mesh
instance.nostr.senderPeerID = mesh.myPeerID
return instance
} }
} }