package com.mycrib.android.viewmodel import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.mycrib.shared.models.LoginRequest import com.mycrib.shared.models.RegisterRequest import com.mycrib.shared.network.ApiResult import com.mycrib.shared.network.AuthApi import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch class AuthViewModel : ViewModel() { private val authApi = AuthApi() private val _loginState = MutableStateFlow>(ApiResult.Loading) val loginState: StateFlow> = _loginState fun login(username: String, password: String) { viewModelScope.launch { _loginState.value = ApiResult.Loading val result = authApi.login(LoginRequest(username, password)) _loginState.value = when (result) { is ApiResult.Success -> ApiResult.Success(result.data.token) is ApiResult.Error -> result else -> ApiResult.Error("Unknown error") } } } fun register(username: String, email: String, password: String) { viewModelScope.launch { _loginState.value = ApiResult.Loading val result = authApi.register( RegisterRequest( username = username, email = email, password = password ) ) _loginState.value = when (result) { is ApiResult.Success -> ApiResult.Success(result.data.token) is ApiResult.Error -> result else -> ApiResult.Error("Unknown error") } } } }