package mx.trackermap.TrackerMap.android.session import android.util.Log import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import kotlinx.coroutines.launch import mx.trackermap.TrackerMap.client.apis.SessionApi import mx.trackermap.TrackerMap.client.models.User class UserInformationViewModel(private val sessionApi: SessionApi) : ViewModel() { sealed class InformationState { object Loading: InformationState() object Failure: InformationState() class Success(val user: User) : InformationState() object Signout: InformationState() } var userInformation = MutableLiveData(InformationState.Loading) init { Log.d("UserInformationVM", "Initializing User Information View Model") } fun fetchUserInfo() { viewModelScope.launch { userInformation.postValue(InformationState.Loading) try { userInformation.postValue(InformationState.Success(sessionApi.sessionGet())) } catch (e: Exception) { userInformation.postValue(InformationState.Failure) } } } fun signout() { viewModelScope.launch { userInformation.postValue(InformationState.Loading) sessionApi.sessionDelete() userInformation.postValue(InformationState.Signout) } } }