From 835283ec644d566b0fc0fee1b02c93c49548b80e Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Fri, 17 Oct 2025 23:29:14 +0200 Subject: [PATCH] load notes in background --- .../main/java/com/bitchat/android/ui/ChatScreen.kt | 11 +++-------- .../main/java/com/bitchat/android/ui/ChatViewModel.kt | 7 +++++++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/bitchat/android/ui/ChatScreen.kt b/app/src/main/java/com/bitchat/android/ui/ChatScreen.kt index ee9c0898..458174ad 100644 --- a/app/src/main/java/com/bitchat/android/ui/ChatScreen.kt +++ b/app/src/main/java/com/bitchat/android/ui/ChatScreen.kt @@ -532,14 +532,14 @@ private fun ChatDialogs( ) } - // Location notes sheet + // Location notes sheet - matches iOS pattern exactly if (showLocationNotesSheet) { val context = androidx.compose.ui.platform.LocalContext.current val locationManager = remember { com.bitchat.android.geohash.LocationChannelManager.getInstance(context) } val availableChannels by locationManager.availableChannels.observeAsState(emptyList()) val nickname by viewModel.nickname.observeAsState("") - // Get building-level geohash (precision 8 for iOS compatibility) + // iOS pattern: notesGeohash ?? LocationChannelManager.shared.availableChannels.first(where: { $0.level == .building })?.geohash val buildingGeohash = availableChannels.firstOrNull { it.level == com.bitchat.android.geohash.GeohashChannelLevel.BUILDING }?.geohash if (buildingGeohash != null) { @@ -554,13 +554,8 @@ private fun ChatDialogs( nickname = nickname, onDismiss = onLocationNotesSheetDismiss ) - - // Subscribe to notes counter when sheet is shown - LaunchedEffect(buildingGeohash) { - com.bitchat.android.nostr.LocationNotesCounter.subscribe(buildingGeohash) - } } else { - // No block geohash available - show error state + // No building geohash available - show error state (matches iOS) ModalBottomSheet( onDismissRequest = onLocationNotesSheetDismiss, containerColor = MaterialTheme.colorScheme.surface diff --git a/app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt b/app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt index 00d25db2..77aeb03e 100644 --- a/app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt +++ b/app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt @@ -610,6 +610,7 @@ class ChatViewModel( /** * Update notes counter subscription based on current channel and location permission * iOS pattern: Subscribe when in mesh mode and location is authorized + * ENHANCEMENT: Also subscribe LocationNotesManager to load actual notes in background */ private fun updateNotesCounterSubscription(channel: com.bitchat.android.geohash.ChannelID?) { try { @@ -631,20 +632,26 @@ class ChatViewModel( if (buildingGeohash != null) { Log.d(TAG, "📍 Subscribing to location notes for building geohash: $buildingGeohash") + // Subscribe counter for badge com.bitchat.android.nostr.LocationNotesCounter.subscribe(buildingGeohash) + // ALSO subscribe manager to load actual notes in background + com.bitchat.android.nostr.LocationNotesManager.getInstance().setGeohash(buildingGeohash) } else { // Keep existing subscription if we had one (avoid flicker) if (com.bitchat.android.nostr.LocationNotesCounter.geohash.value == null) { com.bitchat.android.nostr.LocationNotesCounter.cancel() + com.bitchat.android.nostr.LocationNotesManager.getInstance().cancel() } } } else { com.bitchat.android.nostr.LocationNotesCounter.cancel() + com.bitchat.android.nostr.LocationNotesManager.getInstance().cancel() } } is com.bitchat.android.geohash.ChannelID.Location -> { // Location channel mode: cancel counter (only show in mesh mode) com.bitchat.android.nostr.LocationNotesCounter.cancel() + com.bitchat.android.nostr.LocationNotesManager.getInstance().cancel() } null -> { // Default to mesh behavior