diff options
Diffstat (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/session')
-rw-r--r-- | androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/LoginFragment.kt | 21 | ||||
-rw-r--r-- | androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/LoginViewModel.kt | 29 |
2 files changed, 28 insertions, 22 deletions
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/LoginFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/LoginFragment.kt index 82d11d1..cc84f06 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/LoginFragment.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/LoginFragment.kt @@ -1,5 +1,6 @@ package mx.trackermap.TrackerMap.android.session +import android.content.Intent import android.os.Bundle import android.util.Log import android.view.LayoutInflater @@ -10,10 +11,10 @@ import androidx.core.widget.doAfterTextChanged import androidx.fragment.app.Fragment import com.zhuinden.liveevent.observe import mx.trackermap.TrackerMap.android.databinding.LoginBinding +import mx.trackermap.TrackerMap.android.units.UnitsActivity import org.koin.androidx.viewmodel.ext.android.viewModel class LoginFragment : Fragment() { - private var _binding: LoginBinding? = null private val binding get() = _binding!! private val loginViewModel: LoginViewModel by viewModel() @@ -53,23 +54,27 @@ class LoginFragment : Fragment() { } private fun setupObservers() { - loginViewModel.loginResult.observe(this) { result -> + loginViewModel.loginState.observe(this) { result -> Log.d("LoginFragment", result.toString()) when (result) { - LoginViewModel.LoginResult.Loading -> { + LoginViewModel.LoginState.Loading -> { Toast.makeText(context, "Loading...", Toast.LENGTH_SHORT).show() } - LoginViewModel.LoginResult.EmailMissing -> { + LoginViewModel.LoginState.EmailMissing -> { Toast.makeText(context, "Email is missing", Toast.LENGTH_SHORT).show() } - LoginViewModel.LoginResult.PasswordMissing -> { + LoginViewModel.LoginState.PasswordMissing -> { Toast.makeText(context, "Password is missing", Toast.LENGTH_SHORT).show() } - LoginViewModel.LoginResult.Failure -> { + LoginViewModel.LoginState.Failure -> { Toast.makeText(context, "Failed login", Toast.LENGTH_SHORT).show() } - LoginViewModel.LoginResult.Success -> { - Toast.makeText(context, "Success", Toast.LENGTH_SHORT).show() + LoginViewModel.LoginState.Success -> { + val activity = requireActivity() + val intent = Intent(activity.applicationContext, UnitsActivity::class.java) + intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK + startActivity(intent) + activity.finish() } } } 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 index 82c5bf9..8f53b7e 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/LoginViewModel.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/LoginViewModel.kt @@ -15,26 +15,27 @@ class LoginViewModel( savedStateHandle: SavedStateHandle ) : ViewModel() { - sealed class LoginResult { - object Loading: LoginResult() - object EmailMissing : LoginResult() - object PasswordMissing : LoginResult() - object Failure : LoginResult() - object Success : LoginResult() + sealed class LoginState { + object Loading: LoginState() + object EmailMissing : LoginState() + object PasswordMissing : LoginState() + object Failure : LoginState() + object Success : LoginState() } val email: MutableLiveData<String> = savedStateHandle.getLiveData("user", "") val password: MutableLiveData<String> = savedStateHandle.getLiveData("password", "") - private val loginResultEmitter = EventEmitter<LoginResult>() - val loginResult: EventSource<LoginResult> = loginResultEmitter + private val loginStateEmitter = EventEmitter<LoginState>() + val loginState: EventSource<LoginState> = loginStateEmitter fun restoreSession() { + loginStateEmitter.emit(LoginState.Loading); viewModelScope.launch { try { val user = sessionApi.sessionGet() Log.d("LoginViewModel", user.toString()) - loginResultEmitter.emit(LoginResult.Success) + loginStateEmitter.emit(LoginState.Success) } catch (e: Exception) { Log.d("LoginViewModel", "No session") } @@ -46,23 +47,23 @@ class LoginViewModel( val password = password.value!!.toString().trim() if (email.isEmpty()) { - loginResultEmitter.emit(LoginResult.EmailMissing) + loginStateEmitter.emit(LoginState.EmailMissing) return } if (password.isEmpty()) { - loginResultEmitter.emit(LoginResult.PasswordMissing) + loginStateEmitter.emit(LoginState.PasswordMissing) return } - loginResultEmitter.emit(LoginResult.Loading) + loginStateEmitter.emit(LoginState.Loading) viewModelScope.launch { try { val user = sessionApi.sessionPost(email, password) Log.d("LoginViewModel", user.toString()) - loginResultEmitter.emit(LoginResult.Success) + loginStateEmitter.emit(LoginState.Success) } catch (e: Exception) { - loginResultEmitter.emit(LoginResult.Failure) + loginStateEmitter.emit(LoginState.Failure) } } } |