Files
honeyDueKMP/composeApp/src/commonMain/kotlin/com/example/mycrib/viewmodel/AuthViewModel.kt
Trey t 78c62cfc52 Initial commit: Kotlin Multiplatform project setup
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 09:15:49 -06:00

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")
}
}
}
}