diff --git a/app/src/main/java/hu/bbara/purefin/login/ui/LoginScreen.kt b/app/src/main/java/hu/bbara/purefin/login/ui/LoginScreen.kt index 27b17ec..f48daa8 100644 --- a/app/src/main/java/hu/bbara/purefin/login/ui/LoginScreen.kt +++ b/app/src/main/java/hu/bbara/purefin/login/ui/LoginScreen.kt @@ -51,7 +51,7 @@ fun LoginScreen( val TextSecondary = Color(0xFF9EA3A8) // Observe ViewModel state - val serverUrl by viewModel.url.collectAsState("") + val serverUrl by viewModel.url.collectAsState() val username by viewModel.username.collectAsState() val password by viewModel.password.collectAsState() @@ -118,7 +118,7 @@ fun LoginScreen( PurefinComplexTextField( label = "Server URL", value = serverUrl, - onValueChange = { coroutineScope.launch { viewModel.setUrl(it) } }, + onValueChange = { viewModel.setUrl(it) }, placeholder = "http://192.168.1.100:8096", leadingIcon = Icons.Default.Storage ) diff --git a/app/src/main/java/hu/bbara/purefin/login/viewmodel/LoginViewModel.kt b/app/src/main/java/hu/bbara/purefin/login/viewmodel/LoginViewModel.kt index 0cae353..dc91cee 100644 --- a/app/src/main/java/hu/bbara/purefin/login/viewmodel/LoginViewModel.kt +++ b/app/src/main/java/hu/bbara/purefin/login/viewmodel/LoginViewModel.kt @@ -6,12 +6,10 @@ import dagger.hilt.android.lifecycle.HiltViewModel import hu.bbara.purefin.client.JellyfinApiClient import hu.bbara.purefin.session.UserSessionRepository import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow -import kotlinx.coroutines.flow.map -import kotlinx.coroutines.flow.onStart -import kotlinx.coroutines.flow.stateIn +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.launch import javax.inject.Inject @HiltViewModel @@ -23,18 +21,17 @@ class LoginViewModel @Inject constructor( val username: StateFlow = _username.asStateFlow() private val _password = MutableStateFlow("") val password: StateFlow = _password.asStateFlow() + private val _url = MutableStateFlow("") + val url: StateFlow = _url.asStateFlow() - val url: StateFlow = userSessionRepository.session.map { - it.url - }.onStart { } - .stateIn( - scope = viewModelScope, - started = SharingStarted.WhileSubscribed(5000), - initialValue = "" - ) + init { + viewModelScope.launch { + _url.value = userSessionRepository.serverUrl.first() + } + } - suspend fun setUrl(url: String) { - userSessionRepository.setServerUrl(url) + fun setUrl(url: String) { + _url.value = url } fun setUsername(username: String) { @@ -52,6 +49,7 @@ class LoginViewModel @Inject constructor( } suspend fun login(): Boolean { + userSessionRepository.setServerUrl(url.value) return jellyfinApiClient.login(url.value, username.value, password.value) }