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,16 +19,10 @@ 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 instance = INSTANCE ?: synchronized(this) {
INSTANCE ?: run {
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)
@@ -37,6 +31,11 @@ class MessageRouter private constructor(
}
}
}
// Always update mesh reference and sync peer ID
instance.mesh = mesh
instance.nostr.senderPeerID = mesh.myPeerID
return instance
}
}
// Outbox: peerID -> queued (content, nickname, messageID)