From 916f5355030eb0c41bf0b546df00fbef054c5e6a Mon Sep 17 00:00:00 2001 From: jack Date: Thu, 21 Aug 2025 01:52:54 +0200 Subject: [PATCH] Fix: send screenshot notice to active public channel (geohash when selected), not always mesh --- bitchat/ViewModels/ChatViewModel.swift | 29 ++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/bitchat/ViewModels/ChatViewModel.swift b/bitchat/ViewModels/ChatViewModel.swift index 76f69051..39dd44cc 100644 --- a/bitchat/ViewModels/ChatViewModel.swift +++ b/bitchat/ViewModels/ChatViewModel.swift @@ -2147,9 +2147,34 @@ class ChatViewModel: ObservableObject, BitchatDelegate { trimPrivateChatMessagesIfNeeded(for: peerID) } else { - // In public chat - send to everyone + // In public chat - send to active public channel + #if os(iOS) + switch activeChannel { + case .mesh: + meshService.sendMessage(screenshotMessage, mentions: []) + case .location(let ch): + Task { @MainActor in + do { + let identity = try NostrIdentityBridge.deriveIdentity(forGeohash: ch.geohash) + let event = try NostrProtocol.createEphemeralGeohashEvent( + content: screenshotMessage, + geohash: ch.geohash, + senderIdentity: identity, + nickname: self.nickname + ) + NostrRelayManager.shared.sendEvent(event) + // Track ourselves as active participant + self.recordGeoParticipant(pubkeyHex: identity.publicKeyHex) + } catch { + SecureLogger.log("❌ Failed to send geohash screenshot message: \(error)", category: SecureLogger.session, level: .error) + self.addSystemMessage("failed to send to location channel") + } + } + } + #else meshService.sendMessage(screenshotMessage, mentions: []) - + #endif + // Show local notification immediately as system message let localNotification = BitchatMessage( sender: "system",