Contain remaining settings loader failures and remove retired UI scopes
This commit is contained in:
1 parent
828b36f290
commit
30648086b4
1 file changed
+41
-43
+41
-43
@@ -62,16 +62,13 @@ import android.os.Build
|
||||
import android.provider.Settings
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.compose.LifecycleResumeEffect
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.CancellationException
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.withContext
|
||||
import kotlinx.coroutines.flow.first
|
||||
import java.util.UUID
|
||||
import java.io.IOException
|
||||
|
||||
private val LEVELS = listOf("DISABLED", "NONE", "ERROR", "WARN", "INFO", "DEBUG", "TRACE")
|
||||
private val PROTOCOLS = listOf("tcp", "udp")
|
||||
@@ -244,7 +241,6 @@ private fun StreamSettingsTab() {
|
||||
@Composable
|
||||
private fun GeneralSettingsTab(onDirty: (Boolean) -> Unit) {
|
||||
val provider = ChatApplication.instance.configProvider
|
||||
val scope = rememberCoroutineScope()
|
||||
var nodeName by remember { mutableStateOf("") }
|
||||
var localInvitesEnabled by remember { mutableStateOf(provider.getInt("chat.local_invites_enabled") != 0) }
|
||||
var localBroadcastsEnabled by remember { mutableStateOf(provider.getInt("chat.local_broadcasts_enabled") != 0) }
|
||||
@@ -362,38 +358,41 @@ private fun DeveloperSettingsTab(vm: ChatViewModel, onDirty: (Boolean) -> Unit,
|
||||
}
|
||||
|
||||
LaunchedEffect(Unit) {
|
||||
listenPort = provider.getInt("node.listen_port").toString()
|
||||
controlPort = provider.getInt("control.port").toString()
|
||||
controlBindIp = provider.getString("control.bind_ip") ?: "127.0.0.1"
|
||||
val allIface = listOf("lo" to "127.0.0.1") + provider.getAvailableInterfaces()
|
||||
ctrlBindLabel = allIface.firstOrNull { it.second == controlBindIp }?.let { "${it.first} (${it.second})" } ?: "lo (127.0.0.1)"
|
||||
debugLevel = provider.getString("debug.console_level") ?: "info"
|
||||
logFile = provider.getString("debug.log_file") ?: "utun.log"
|
||||
val udpLog = try { provider.getUdpLogSettings() }
|
||||
catch (e: CancellationException) { throw e }
|
||||
catch (e: Exception) { provider.changes.reportFailure("load network logging", e); null }
|
||||
if (udpLog != null) {
|
||||
logUdpEnabled = udpLog.enabled; logUdpIp = udpLog.ip; logUdpPort = udpLog.port.toString()
|
||||
logUdpLoaded = true
|
||||
LogManager.addLog("INFO", "UDPLog", "Settings loaded enabled=${udpLog.enabled} active=${udpLog.active}")
|
||||
}
|
||||
standbyActiveSec = provider.getInt("chat.standby_active_sec").toString()
|
||||
standbySleepSec = provider.getInt("chat.standby_sleep_sec").toString()
|
||||
standbyMinSleepSec = provider.getInt("chat.standby_min_sleep_sec").toString()
|
||||
standbyKeepaliveMs = provider.getInt("chat.standby_keepalive_ms").toString()
|
||||
val stored = provider.getString("debug.categories") ?: ""
|
||||
catLevels = parseDebugPreferences(stored)
|
||||
try { servers = provider.loadServersFromConfig().await()
|
||||
serversLoaded = true
|
||||
} catch (e: CancellationException) { throw e
|
||||
} catch (e: Exception) {
|
||||
LogManager.addLog("ERROR", "CFG", "load network settings failed: ${e.javaClass.simpleName}: ${e.message}")
|
||||
configFailure = true
|
||||
}
|
||||
availableIfaces = allIface.drop(1)
|
||||
connectionMode = provider.getConnectionMode()
|
||||
autoSocketProtocols = provider.getAutoSocketProtocols()
|
||||
autoConnect = provider.getInt("chat.group_autoconnect") != 0
|
||||
try {
|
||||
listenPort = provider.getInt("node.listen_port").toString()
|
||||
controlPort = provider.getInt("control.port").toString()
|
||||
controlBindIp = provider.getString("control.bind_ip") ?: "127.0.0.1"
|
||||
val allIface = listOf("lo" to "127.0.0.1") + provider.getAvailableInterfaces()
|
||||
ctrlBindLabel = allIface.firstOrNull { it.second == controlBindIp }?.let { "${it.first} (${it.second})" } ?: "lo (127.0.0.1)"
|
||||
debugLevel = provider.getString("debug.console_level") ?: "info"
|
||||
logFile = provider.getString("debug.log_file") ?: "utun.log"
|
||||
val udpLog = try { provider.getUdpLogSettings() }
|
||||
catch (e: CancellationException) { throw e }
|
||||
catch (e: Exception) { provider.changes.reportFailure("load network logging", e); null }
|
||||
if (udpLog != null) {
|
||||
logUdpEnabled = udpLog.enabled; logUdpIp = udpLog.ip; logUdpPort = udpLog.port.toString()
|
||||
logUdpLoaded = true
|
||||
LogManager.addLog("INFO", "UDPLog", "Settings loaded enabled=${udpLog.enabled} active=${udpLog.active}")
|
||||
}
|
||||
standbyActiveSec = provider.getInt("chat.standby_active_sec").toString()
|
||||
standbySleepSec = provider.getInt("chat.standby_sleep_sec").toString()
|
||||
standbyMinSleepSec = provider.getInt("chat.standby_min_sleep_sec").toString()
|
||||
standbyKeepaliveMs = provider.getInt("chat.standby_keepalive_ms").toString()
|
||||
val stored = provider.getString("debug.categories") ?: ""
|
||||
catLevels = parseDebugPreferences(stored)
|
||||
try { servers = provider.loadServersFromConfig().await()
|
||||
serversLoaded = true
|
||||
} catch (e: CancellationException) { throw e
|
||||
} catch (e: Exception) {
|
||||
LogManager.addLog("ERROR", "CFG", "load network settings failed: ${e.javaClass.simpleName}: ${e.message}")
|
||||
configFailure = true
|
||||
}
|
||||
availableIfaces = allIface.drop(1)
|
||||
connectionMode = provider.getConnectionMode()
|
||||
autoSocketProtocols = provider.getAutoSocketProtocols()
|
||||
autoConnect = provider.getInt("chat.group_autoconnect") != 0
|
||||
} catch (e: CancellationException) { throw e }
|
||||
catch (e: Exception) { configFailure = true; provider.changes.reportFailure("load developer settings", e) }
|
||||
}
|
||||
|
||||
val save: (List<ServerEntry>) -> Unit = { s ->
|
||||
@@ -871,7 +870,6 @@ private fun DeveloperSettingsTab(vm: ChatViewModel, onDirty: (Boolean) -> Unit,
|
||||
@Composable
|
||||
internal fun RadioAutomaticSettings(provider: ConfigProvider, compact: Boolean = false) {
|
||||
val engine = remember { RadioAudioEngine.instance() }
|
||||
val scope = rememberCoroutineScope()
|
||||
val saved by remember { provider.changes.observe("radio automatic preferences", provider.radioAutoSettings) }
|
||||
.collectAsState(initial = remember { provider.getRadioAutoSettings() })
|
||||
var draft by remember(saved) { mutableStateOf(saved) }
|
||||
@@ -1014,7 +1012,6 @@ internal fun RadioAutomaticSettings(provider: ConfigProvider, compact: Boolean =
|
||||
@Composable
|
||||
private fun RadioSettingsTab() {
|
||||
val provider = ChatApplication.instance.configProvider
|
||||
val scope = rememberCoroutineScope()
|
||||
|
||||
Column(
|
||||
modifier = Modifier.padding(16.dp).verticalScroll(rememberScrollState()),
|
||||
@@ -1183,7 +1180,6 @@ private fun RadioSettingsTab() {
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
private fun AudioSettingsTab(vm: ChatViewModel) {
|
||||
val scope = rememberCoroutineScope()
|
||||
val provider = ChatApplication.instance.configProvider
|
||||
|
||||
/* Mic test state */
|
||||
@@ -1456,16 +1452,18 @@ private fun AudioSettingsTab(vm: ChatViewModel) {
|
||||
@Composable
|
||||
private fun StorageSettingsTab() {
|
||||
val provider = ChatApplication.instance.configProvider
|
||||
val scope = rememberCoroutineScope()
|
||||
|
||||
var autoload by remember { mutableStateOf(true) }
|
||||
var autoloadMaxSizeMb by remember { mutableStateOf("100") }
|
||||
var maxStorageGb by remember { mutableStateOf("1") }
|
||||
|
||||
LaunchedEffect(Unit) {
|
||||
autoload = provider.getInt("chat.storage_autoload") != 0
|
||||
autoloadMaxSizeMb = provider.getInt("chat.storage_autoload_maxsize_mb").toString()
|
||||
maxStorageGb = provider.getInt("chat.storage_maxsize_gb").toString()
|
||||
try {
|
||||
autoload = provider.getInt("chat.storage_autoload") != 0
|
||||
autoloadMaxSizeMb = provider.getInt("chat.storage_autoload_maxsize_mb").toString()
|
||||
maxStorageGb = provider.getInt("chat.storage_maxsize_gb").toString()
|
||||
} catch (e: CancellationException) { throw e }
|
||||
catch (e: Exception) { provider.changes.reportFailure("load storage settings", e) }
|
||||
}
|
||||
|
||||
Column(
|
||||
|
||||
Reference in new issue
Block a user