fix(chats): share single DesktopIAccount across deck — DMs now visible

DeckColumnContainer was creating its own DesktopIAccount (and ChatroomList)
for the Messages column, while Main.kt created a separate one for DM relay
subscriptions. Events were added to one ChatroomList but the UI read from
the other, so DMs never appeared.

Fix: thread the single iAccount from Main.kt through DeckLayout →
DeckColumnContainer → RootContent → DesktopMessagesScreen. Removed the
duplicate DesktopIAccount and DmSendTracker creation from RootContent.

Audited all other deck column types — no similar instance duplication found.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
nrobi144
2026-03-19 07:31:27 +02:00
parent 24d4073b9b
commit 598256639b
4 changed files with 10 additions and 13 deletions
@@ -655,16 +655,13 @@ fun MainContent(
if (reactionNote.event == null) {
reactionNote.loadEvent(innerEvent, reactionAuthor, emptyList())
}
// Attach reaction to the target message note
innerEvent.originalPost().forEach { targetId ->
val targetNote = localCache.getNoteIfExists(targetId)
targetNote?.addReaction(reactionNote)
}
}
else -> {
println("Unhandled NIP-17 inner event: ${innerEvent.kind}")
}
else -> {}
}
}
}
@@ -704,6 +701,7 @@ fun MainContent(
localCache = localCache,
accountManager = accountManager,
account = account,
iAccount = iAccount,
nwcConnection = nwcConnection,
subscriptionsCoordinator = subscriptionsCoordinator,
appScope = appScope,
@@ -740,6 +738,7 @@ fun MainContent(
localCache = localCache,
accountManager = accountManager,
account = account,
iAccount = iAccount,
nwcConnection = nwcConnection,
subscriptionsCoordinator = subscriptionsCoordinator,
appScope = appScope,
@@ -55,7 +55,6 @@ import com.vitorpamplona.amethyst.desktop.ui.ThreadScreen
import com.vitorpamplona.amethyst.desktop.ui.UserProfileScreen
import com.vitorpamplona.amethyst.desktop.ui.ZapFeedback
import com.vitorpamplona.amethyst.desktop.ui.chats.DesktopMessagesScreen
import com.vitorpamplona.amethyst.desktop.ui.chats.DmSendTracker
import com.vitorpamplona.quartz.nip47WalletConnect.Nip47WalletConnect.Nip47URINorm
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.MutableStateFlow
@@ -90,6 +89,7 @@ fun DeckColumnContainer(
localCache: DesktopLocalCache,
accountManager: AccountManager,
account: AccountState.LoggedIn,
iAccount: DesktopIAccount,
nwcConnection: Nip47URINorm?,
subscriptionsCoordinator: DesktopRelaySubscriptionsCoordinator,
appScope: CoroutineScope,
@@ -129,6 +129,7 @@ fun DeckColumnContainer(
localCache = localCache,
accountManager = accountManager,
account = account,
iAccount = iAccount,
nwcConnection = nwcConnection,
subscriptionsCoordinator = subscriptionsCoordinator,
appScope = appScope,
@@ -170,6 +171,7 @@ internal fun RootContent(
localCache: DesktopLocalCache,
accountManager: AccountManager,
account: AccountState.LoggedIn,
iAccount: DesktopIAccount,
nwcConnection: Nip47URINorm?,
subscriptionsCoordinator: DesktopRelaySubscriptionsCoordinator,
appScope: CoroutineScope,
@@ -202,14 +204,6 @@ internal fun RootContent(
}
DeckColumnType.Messages -> {
val dmSendTracker =
remember(relayManager) {
DmSendTracker(relayManager.client)
}
val iAccount =
remember(account, localCache, relayManager, dmSendTracker) {
DesktopIAccount(account, localCache, relayManager, dmSendTracker, appScope)
}
DesktopMessagesScreen(
account = iAccount,
cacheProvider = localCache,
@@ -58,6 +58,7 @@ fun DeckLayout(
localCache: DesktopLocalCache,
accountManager: AccountManager,
account: AccountState.LoggedIn,
iAccount: com.vitorpamplona.amethyst.desktop.model.DesktopIAccount,
nwcConnection: Nip47URINorm?,
subscriptionsCoordinator: DesktopRelaySubscriptionsCoordinator,
appScope: CoroutineScope,
@@ -109,6 +110,7 @@ fun DeckLayout(
localCache = localCache,
accountManager = accountManager,
account = account,
iAccount = iAccount,
nwcConnection = nwcConnection,
subscriptionsCoordinator = subscriptionsCoordinator,
appScope = appScope,
@@ -94,6 +94,7 @@ fun SinglePaneLayout(
localCache: DesktopLocalCache,
accountManager: AccountManager,
account: AccountState.LoggedIn,
iAccount: com.vitorpamplona.amethyst.desktop.model.DesktopIAccount,
nwcConnection: Nip47URINorm?,
subscriptionsCoordinator: DesktopRelaySubscriptionsCoordinator,
appScope: CoroutineScope,
@@ -167,6 +168,7 @@ fun SinglePaneLayout(
localCache = localCache,
accountManager = accountManager,
account = account,
iAccount = iAccount,
nwcConnection = nwcConnection,
subscriptionsCoordinator = subscriptionsCoordinator,
appScope = appScope,