diff options
author | Isidro Henoch <imhenoch@protonmail.com> | 2022-01-12 15:09:52 -0600 |
---|---|---|
committer | Isidro Henoch <imhenoch@protonmail.com> | 2022-01-12 15:09:52 -0600 |
commit | cc7cfcb2d65a1164f5b75ae4292ea9a099746038 (patch) | |
tree | e3c4c78016fe2bac20bef92098d0d02b3c6f6ed2 /androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/UserInformationViewModel.kt | |
parent | 9b5850870bef2770f281d51b5c96ac9103ab3667 (diff) | |
download | etbsa-trackermap-mobile-cc7cfcb2d65a1164f5b75ae4292ea9a099746038.tar.gz etbsa-trackermap-mobile-cc7cfcb2d65a1164f5b75ae4292ea9a099746038.tar.bz2 etbsa-trackermap-mobile-cc7cfcb2d65a1164f5b75ae4292ea9a099746038.zip |
Adds the user information functionality
- Displays the user information
- Allows the user to sign out
Diffstat (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/UserInformationViewModel.kt')
-rw-r--r-- | androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/UserInformationViewModel.kt | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/UserInformationViewModel.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/UserInformationViewModel.kt new file mode 100644 index 0000000..b2379fc --- /dev/null +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/UserInformationViewModel.kt @@ -0,0 +1,44 @@ +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>(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) + } + } +}
\ No newline at end of file |