forked from Olympic/NTO-2025-Android-TeamTask
Add save code
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
package ru.myitschool.work.ui.screen.auth
|
||||
|
||||
import android.app.Application
|
||||
import android.content.Context
|
||||
import android.content.Context.MODE_PRIVATE
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.lifecycle.AndroidViewModel
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@@ -16,13 +18,27 @@ import kotlinx.coroutines.launch
|
||||
import ru.myitschool.work.data.repo.AuthRepository
|
||||
import ru.myitschool.work.domain.auth.CheckAndSaveAuthCodeUseCase
|
||||
|
||||
class AuthViewModel : ViewModel() {
|
||||
class AuthViewModel(application: Application) : AndroidViewModel(application) {
|
||||
private val checkAndSaveAuthCodeUseCase by lazy { CheckAndSaveAuthCodeUseCase(AuthRepository) }
|
||||
private val _uiState = MutableStateFlow<AuthState>(AuthState.Data())
|
||||
val uiState: StateFlow<AuthState> = _uiState.asStateFlow()
|
||||
|
||||
private val _actionFlow: MutableSharedFlow<Unit> = MutableSharedFlow()
|
||||
val actionFlow: SharedFlow<Unit> = _actionFlow
|
||||
private val context = getApplication<Application>().applicationContext
|
||||
private val prefs by lazy {
|
||||
context.getSharedPreferences("auth", Context.MODE_PRIVATE)
|
||||
}
|
||||
|
||||
init {
|
||||
val savedCode = prefs.getString("saved_code", null)
|
||||
if (!savedCode.isNullOrEmpty()) {
|
||||
viewModelScope.launch {
|
||||
_actionFlow.emit(Unit)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
fun onIntent(intent: AuthIntent) {
|
||||
@@ -37,7 +53,9 @@ class AuthViewModel : ViewModel() {
|
||||
_uiState.update { AuthState.Loading }
|
||||
checkAndSaveAuthCodeUseCase.invoke(intent.text).fold(
|
||||
onSuccess = {
|
||||
|
||||
prefs.edit()
|
||||
.putString("saved_code", intent.text)
|
||||
.apply()
|
||||
_actionFlow.emit(Unit)
|
||||
},
|
||||
onFailure = { error ->
|
||||
|
||||
Reference in New Issue
Block a user