From 33616061c294210114f08bb6d32935e2783bc609 Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Wed, 3 Sep 2025 02:22:53 +0200 Subject: [PATCH] wip: select bridges --- .../com/bitchat/android/net/TorManager.kt | 14 +++++++ .../java/com/bitchat/android/ui/AboutSheet.kt | 37 +++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/app/src/main/java/com/bitchat/android/net/TorManager.kt b/app/src/main/java/com/bitchat/android/net/TorManager.kt index e04c2240..b0831cfe 100644 --- a/app/src/main/java/com/bitchat/android/net/TorManager.kt +++ b/app/src/main/java/com/bitchat/android/net/TorManager.kt @@ -77,6 +77,9 @@ object TorManager { fun init(application: Application) { if (initialized) return synchronized(this) { + // Initialize bridge prefs once + try { TorBridgePreferenceManager.init(application) } catch (_: Throwable) {} + if (initialized) return initialized = true currentApplication = application @@ -178,6 +181,17 @@ object TorManager { .setSocksPort(currentSocksPort) .setDnsPort(currentSocksPort + 1) .setLogListener(logListener) + .apply { + // Apply bridge settings + val bridgesEnabled = TorBridgePreferenceManager.isEnabled(application) + if (bridgesEnabled) { + val bridgeLines = TorBridgePreferenceManager.getLines(application) + if (bridgeLines.isNotEmpty()) { + setBridgeLines(bridgeLines) + Log.i(TAG, "Using ${bridgeLines.size} bridge(s): ${bridgeLines.joinToString("; ")}") + } + } + } .build() artiProxyRef.set(proxy) diff --git a/app/src/main/java/com/bitchat/android/ui/AboutSheet.kt b/app/src/main/java/com/bitchat/android/ui/AboutSheet.kt index 50f9a5dc..3a2ca4a7 100644 --- a/app/src/main/java/com/bitchat/android/ui/AboutSheet.kt +++ b/app/src/main/java/com/bitchat/android/ui/AboutSheet.kt @@ -108,6 +108,43 @@ fun AboutSheet( } } + // Tor Bridges section (minimal) + item { + var showBridgeSheet by remember { mutableStateOf(false) } + if (showBridgeSheet) { + TorBridgeSheet( + isPresented = true, + onDismiss = { showBridgeSheet = false } + ) + } + Column( + modifier = Modifier.fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + Text( + text = "tor bridges", + fontSize = 12.sp, + fontFamily = FontFamily.Monospace, + fontWeight = FontWeight.Medium, + color = colorScheme.onSurface.copy(alpha = 0.8f) + ) + Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) { + Button( + onClick = { showBridgeSheet = true }, + colors = ButtonDefaults.buttonColors(containerColor = Color(0xFFFF9500).copy(alpha = 0.15f)), + ) { + Text("manage bridges", fontFamily = FontFamily.Monospace, color = colorScheme.onSurface) + } + } + Text( + text = "add custom bridge lines for censored networks.", + fontSize = 10.sp, + fontFamily = FontFamily.Monospace, + color = colorScheme.onSurface.copy(alpha = 0.6f) + ) + } + } + // Features section item { Column(verticalArrangement = Arrangement.spacedBy(12.dp)) {