12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package me.yoqi.android.netauth.ui.login;
- import android.util.Patterns;
- import androidx.lifecycle.LiveData;
- import androidx.lifecycle.MutableLiveData;
- import androidx.lifecycle.ViewModel;
- import me.yoqi.android.netauth.R;
- import me.yoqi.android.netauth.data.LoginRepository;
- import me.yoqi.android.netauth.data.Result;
- import me.yoqi.android.netauth.data.model.LoggedInUser;
- /**
- *
- */
- public class LoginViewModel extends ViewModel {
- private final MutableLiveData<LoginFormState> loginFormState = new MutableLiveData<>();
- private final MutableLiveData<LoginResult> loginResult = new MutableLiveData<>();
- private LoginRepository loginRepository;
- LoginViewModel(LoginRepository loginRepository) {
- this.loginRepository = loginRepository;
- }
- /**
- * @return
- */
- LiveData<LoginFormState> getLoginFormState() {
- return loginFormState;
- }
- /**
- * 获取登录结果
- *
- * @return
- */
- LiveData<LoginResult> getLoginResult() {
- return loginResult;
- }
- /**
- * 登录
- *
- * @param username 用户名
- * @param password 密码
- */
- public void login(String username, String password) {
- Result<LoggedInUser> result = loginRepository.login(username, password);
- if (result instanceof Result.Success) {
- LoggedInUser data = ((Result.Success<LoggedInUser>) result).getData();
- loginResult.setValue(new LoginResult(new LoggedInUserView(data.getDisplayName())));
- //登录成功,跳转到 MainActivity
- } else {
- loginResult.setValue(new LoginResult(R.string.login_failed));
- }
- }
- /**
- * 密码框更改事件
- *
- * @param username
- * @param password
- */
- public void loginDataChanged(String username, String password) {
- if (!isUserNameValid(username)) {
- loginFormState.setValue(new LoginFormState(R.string.invalid_username, null));
- } else if (!isPasswordValid(password)) {
- loginFormState.setValue(new LoginFormState(null, R.string.invalid_password));
- } else {
- loginFormState.setValue(new LoginFormState(true));
- }
- }
- // A placeholder username validation check
- private boolean isUserNameValid(String username) {
- if (username == null) {
- return false;
- }
- if (username.contains("@")) {
- return Patterns.EMAIL_ADDRESS.matcher(username).matches();
- } else {
- return !username.trim().isEmpty();
- }
- }
- // A placeholder password validation check
- private boolean isPasswordValid(String password) {
- return password != null && password.trim().length() > 5;
- }
- }
|