diff --git a/app/src/main/java/com/bitchat/android/ui/debug/DebugPreferenceManager.kt b/app/src/main/java/com/bitchat/android/ui/debug/DebugPreferenceManager.kt index 84b624f7..c7f44d2e 100644 --- a/app/src/main/java/com/bitchat/android/ui/debug/DebugPreferenceManager.kt +++ b/app/src/main/java/com/bitchat/android/ui/debug/DebugPreferenceManager.kt @@ -13,6 +13,7 @@ object DebugPreferenceManager { private const val KEY_GATT_SERVER = "gatt_server_enabled" private const val KEY_GATT_CLIENT = "gatt_client_enabled" private const val KEY_PACKET_RELAY = "packet_relay_enabled" + private const val KEY_HIDE_ANNOUNCE = "hide_announce_logging" private const val KEY_MAX_CONN_OVERALL = "max_connections_overall" private const val KEY_MAX_CONN_SERVER = "max_connections_server" private const val KEY_MAX_CONN_CLIENT = "max_connections_client" @@ -35,6 +36,13 @@ object DebugPreferenceManager { fun getGattServerEnabled(default: Boolean = true): Boolean = if (ready()) prefs.getBoolean(KEY_GATT_SERVER, default) else default + fun getHideAnnounceLogging(default: Boolean = false): Boolean = + if (ready()) prefs.getBoolean(KEY_HIDE_ANNOUNCE, default) else default + + fun setHideAnnounceLogging(value: Boolean) { + if (ready()) prefs.edit().putBoolean(KEY_HIDE_ANNOUNCE, value).apply() + } + fun setGattServerEnabled(value: Boolean) { if (ready()) prefs.edit().putBoolean(KEY_GATT_SERVER, value).apply() } diff --git a/app/src/main/java/com/bitchat/android/ui/debug/DebugSettingsManager.kt b/app/src/main/java/com/bitchat/android/ui/debug/DebugSettingsManager.kt index 81538058..9d377774 100644 --- a/app/src/main/java/com/bitchat/android/ui/debug/DebugSettingsManager.kt +++ b/app/src/main/java/com/bitchat/android/ui/debug/DebugSettingsManager.kt @@ -41,6 +41,9 @@ class DebugSettingsManager private constructor() { val maxConnectionsOverall: StateFlow = _maxConnectionsOverall.asStateFlow() private val _maxServerConnections = MutableStateFlow(8) val maxServerConnections: StateFlow = _maxServerConnections.asStateFlow() + private val _hideAnnounceLogging = MutableStateFlow(false) + val hideAnnounceLogging: StateFlow = _hideAnnounceLogging.asStateFlow() + private val _maxClientConnections = MutableStateFlow(8) val maxClientConnections: StateFlow = _maxClientConnections.asStateFlow() @@ -51,6 +54,7 @@ class DebugSettingsManager private constructor() { _gattServerEnabled.value = DebugPreferenceManager.getGattServerEnabled(true) _gattClientEnabled.value = DebugPreferenceManager.getGattClientEnabled(true) _packetRelayEnabled.value = DebugPreferenceManager.getPacketRelayEnabled(true) + _hideAnnounceLogging.value = DebugPreferenceManager.getHideAnnounceLogging(false) _maxConnectionsOverall.value = DebugPreferenceManager.getMaxConnectionsOverall(8) _maxServerConnections.value = DebugPreferenceManager.getMaxConnectionsServer(8) _maxClientConnections.value = DebugPreferenceManager.getMaxConnectionsClient(8) @@ -115,6 +119,14 @@ class DebugSettingsManager private constructor() { addDebugMessage(DebugMessage.SystemMessage("🔇 Verbose logging disabled")) } } + + fun setHideAnnounceLogging(enabled: Boolean) { + DebugPreferenceManager.setHideAnnounceLogging(enabled) + _hideAnnounceLogging.value = enabled + addDebugMessage(DebugMessage.SystemMessage( + if (enabled) "🙈 Hiding ANNOUNCE logs" else "👀 Showing ANNOUNCE logs" + )) + } fun setGattServerEnabled(enabled: Boolean) { DebugPreferenceManager.setGattServerEnabled(enabled) @@ -223,6 +235,10 @@ class DebugSettingsManager private constructor() { fun logIncomingPacket(senderPeerID: String, senderNickname: String?, messageType: String, viaDeviceId: String?) { if (verboseLoggingEnabled.value) { + // Optional filter: hide ANNOUNCE logs if enabled + if (hideAnnounceLogging.value && messageType.equals("ANNOUNCE", ignoreCase = true)) { + return + } val who = if (!senderNickname.isNullOrBlank()) "$senderNickname ($senderPeerID)" else senderPeerID val routeInfo = if (!viaDeviceId.isNullOrBlank()) " via $viaDeviceId" else " (direct)" addDebugMessage(DebugMessage.PacketEvent( @@ -288,11 +304,16 @@ class DebugSettingsManager private constructor() { val ttlStr = ttl?.toString() ?: "?" if (verboseLoggingEnabled.value) { - addDebugMessage( - DebugMessage.RelayEvent( - "♻️ Relayed $packetType by $senderLabel from $fromName (${fromPeerID ?: "?"}, $fromAddr) to $toName (${toPeerID ?: "?"}, $toAddr) with TTL $ttlStr" + // Optional filter: hide ANNOUNCE relay logs if enabled + if (hideAnnounceLogging.value && packetType.equals("ANNOUNCE", ignoreCase = true)) { + // Still update stats below, but do not emit a debug message + } else { + addDebugMessage( + DebugMessage.RelayEvent( + "♻️ Relayed $packetType by $senderLabel from $fromName (${fromPeerID ?: "?"}, $fromAddr) to $toName (${toPeerID ?: "?"}, $toAddr) with TTL $ttlStr" + ) ) - ) + } } // Update rolling statistics diff --git a/app/src/main/java/com/bitchat/android/ui/debug/DebugSettingsSheet.kt b/app/src/main/java/com/bitchat/android/ui/debug/DebugSettingsSheet.kt index 33fde064..10c05b0f 100644 --- a/app/src/main/java/com/bitchat/android/ui/debug/DebugSettingsSheet.kt +++ b/app/src/main/java/com/bitchat/android/ui/debug/DebugSettingsSheet.kt @@ -120,6 +120,21 @@ fun DebugSettingsSheet( fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f) ) + // New: hide ANNOUNCE logs toggle + Row(verticalAlignment = Alignment.CenterVertically) { + Text("hide announce logs", fontFamily = FontFamily.Monospace, modifier = Modifier.weight(1f)) + val hideAnnounce by manager.hideAnnounceLogging.collectAsState() + Switch( + checked = hideAnnounce, + onCheckedChange = { manager.setHideAnnounceLogging(it) } + ) + } + Text( + "suppress debug log entries for received/relayed ANNOUNCE packets", + fontFamily = FontFamily.Monospace, + fontSize = 11.sp, + color = colorScheme.onSurface.copy(alpha = 0.7f) + ) } } }