diff options
author | Isidro Henoch <imhenoch@protonmail.com> | 2021-12-06 01:04:55 -0600 |
---|---|---|
committer | Isidro Henoch <imhenoch@protonmail.com> | 2021-12-06 01:04:55 -0600 |
commit | 93c204bcd190b242f1dea49e52f28c795e4d0b92 (patch) | |
tree | 7fc0b2908afa4a63a1f144bc2d2718d91500333d /androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/LoginViewModel.kt | |
parent | e51f039b61b0a653b02f5d4d577bfe8f83286a16 (diff) | |
download | etbsa-trackermap-mobile-93c204bcd190b242f1dea49e52f28c795e4d0b92.tar.gz etbsa-trackermap-mobile-93c204bcd190b242f1dea49e52f28c795e4d0b92.tar.bz2 etbsa-trackermap-mobile-93c204bcd190b242f1dea49e52f28c795e4d0b92.zip |
WIP: Implements the Login functionality
- Adds multiple android dependencies, for DI and some utilities
- Updates colors and styles
- Adds an Application
- Adds the Login Fragment and ViewModel
Diffstat (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/LoginViewModel.kt')
-rw-r--r-- | androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/LoginViewModel.kt | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/LoginViewModel.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/LoginViewModel.kt new file mode 100644 index 0000000..9df78aa --- /dev/null +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/LoginViewModel.kt @@ -0,0 +1,57 @@ +package mx.trackermap.TrackerMap.android.session + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.SavedStateHandle +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.zhuinden.eventemitter.EventEmitter +import com.zhuinden.eventemitter.EventSource +import kotlinx.coroutines.launch +import mx.trackermap.TrackerMap.client.apis.SessionApi + +class LoginViewModel( + private val sessionApi: SessionApi, + savedStateHandle: SavedStateHandle +) : ViewModel() { + + sealed class LoginResult { + object Loading: LoginResult() + object EmailMissing : LoginResult() + object PasswordMissing : LoginResult() + object Failure : LoginResult() + object Success : LoginResult() + } + + val email: MutableLiveData<String> = savedStateHandle.getLiveData("user", "") + val password: MutableLiveData<String> = savedStateHandle.getLiveData("password", "") + + private val loginResultEmitter = EventEmitter<LoginResult>() + val loginResult: EventSource<LoginResult> = loginResultEmitter + + fun login() { + val email = email.value!!.toString().trim() + val password = password.value!!.toString().trim() + + if (email.isEmpty()) { + loginResultEmitter.emit(LoginResult.EmailMissing) + return + } + + if (password.isEmpty()) { + loginResultEmitter.emit(LoginResult.PasswordMissing) + return + } + + loginResultEmitter.emit(LoginResult.Loading) + viewModelScope.launch { + try { + val user = sessionApi.sessionPost(email, password) + Log.d("LoginViewModel", user.toString()) + loginResultEmitter.emit(LoginResult.Success) + } catch (e: Exception) { + loginResultEmitter.emit(LoginResult.Failure) + } + } + } +}
\ No newline at end of file |