🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
49 lines
1.7 KiB
Kotlin
49 lines
1.7 KiB
Kotlin
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<String>>(ApiResult.Loading)
|
|
val loginState: StateFlow<ApiResult<String>> = _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")
|
|
}
|
|
}
|
|
}
|
|
}
|