Notes counter UX: avoid grey flicker when closing sheet\n\n- Preserve last count during resubscribe to prevent brief 0 state.\n- Keep existing subscription when building geohash temporarily unavailable; only cancel if none or permission revoked.

This commit is contained in:
jack
2025-09-13 22:41:21 +02:00
parent ea22ccda71
commit a6d98de90e
2 changed files with 12 additions and 3 deletions
+2 -1
View File
@@ -17,9 +17,10 @@ final class LocationNotesCounter: ObservableObject {
func subscribe(geohash gh: String) {
let norm = gh.lowercased()
if geohash == norm { return }
// Do not clear count immediately to avoid UI flicker; keep last known
// value until initial load completes on the new subscription.
cancel()
geohash = norm
count = 0
noteIDs.removeAll()
initialLoadComplete = false
+10 -2
View File
@@ -1530,8 +1530,16 @@ extension ContentView {
if locationManager.permissionState == .authorized {
LocationChannelManager.shared.refreshChannels()
}
if let building = LocationChannelManager.shared.availableChannels.first(where: { $0.level == .building })?.geohash {
LocationNotesCounter.shared.subscribe(geohash: building)
if locationManager.permissionState == .authorized {
if let building = LocationChannelManager.shared.availableChannels.first(where: { $0.level == .building })?.geohash {
LocationNotesCounter.shared.subscribe(geohash: building)
} else {
// Keep existing subscription if we had one to avoid flicker
// Only cancel if we have no known geohash
if LocationNotesCounter.shared.geohash == nil {
LocationNotesCounter.shared.cancel()
}
}
} else {
LocationNotesCounter.shared.cancel()
}