Событие печати, смена адреса, иконки
This commit is contained in:
@@ -32,18 +32,7 @@ fun SettingsScreen(
|
||||
val state by viewModel.state.collectAsState()
|
||||
var baseUrl by remember(state.baseUrl) { mutableStateOf(state.baseUrl) }
|
||||
|
||||
val lifecycleOwner = androidx.compose.ui.platform.LocalLifecycleOwner.current
|
||||
DisposableEffect(lifecycleOwner) {
|
||||
val observer = androidx.lifecycle.LifecycleEventObserver { _, event ->
|
||||
if (event == androidx.lifecycle.Lifecycle.Event.ON_RESUME) {
|
||||
viewModel.loadConfig()
|
||||
}
|
||||
}
|
||||
lifecycleOwner.lifecycle.addObserver(observer)
|
||||
onDispose {
|
||||
lifecycleOwner.lifecycle.removeObserver(observer)
|
||||
}
|
||||
}
|
||||
// Убран автоматический вызов loadConfig() - теперь только по кнопке Refresh
|
||||
|
||||
Scaffold(
|
||||
containerColor = Color(0xFF0F0F10),
|
||||
@@ -110,7 +99,9 @@ fun SettingsScreen(
|
||||
focusedIndicatorColor = Color(0xFF3390EC),
|
||||
unfocusedIndicatorColor = Color.Gray.copy(alpha = 0.5f)
|
||||
),
|
||||
placeholder = { Text("https://...", color = Color.Gray) }
|
||||
placeholder = {
|
||||
Text("Например: http://192.168.1.100:5034/api/", color = Color.Gray.copy(alpha = 0.5f))
|
||||
}
|
||||
)
|
||||
IconButton(onClick = { viewModel.saveBaseUrl(baseUrl) }) {
|
||||
Icon(Icons.Default.Save, contentDescription = null, tint = Color(0xFF3390EC))
|
||||
|
||||
@@ -31,7 +31,7 @@ class SettingsViewModel @Inject constructor(
|
||||
|
||||
init {
|
||||
refreshState()
|
||||
loadConfig()
|
||||
// loadConfig() убран - вызывается только по кнопке Refresh или если URL уже введён
|
||||
}
|
||||
|
||||
private fun refreshState() {
|
||||
@@ -44,6 +44,13 @@ class SettingsViewModel @Inject constructor(
|
||||
}
|
||||
|
||||
fun loadConfig() {
|
||||
// Не загружаем конфиг, если URL не введён
|
||||
val currentUrl = serverConfig.getBaseUrl()
|
||||
if (currentUrl.isBlank()) {
|
||||
android.util.Log.d("SettingsViewModel", "Base URL is empty, skipping config load")
|
||||
return
|
||||
}
|
||||
|
||||
viewModelScope.launch {
|
||||
_state.update { it.copy(isLoading = true, error = null) }
|
||||
val result = authRepository.fetchConfig()
|
||||
@@ -58,6 +65,16 @@ class SettingsViewModel @Inject constructor(
|
||||
}
|
||||
|
||||
fun saveBaseUrl(url: String) {
|
||||
val currentUrl = serverConfig.getBaseUrl()
|
||||
|
||||
// Если URL действительно изменился, очищаем токен и логируем
|
||||
if (currentUrl != url) {
|
||||
android.util.Log.d("SettingsViewModel", "Server URL changed: $currentUrl -> $url, clearing token")
|
||||
viewModelScope.launch {
|
||||
authRepository.logout()
|
||||
}
|
||||
}
|
||||
|
||||
serverConfig.setBaseUrl(url)
|
||||
_state.update { it.copy(baseUrl = url) }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user