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
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
}
}