package com.application.zhangshi_app_android.ui.login;
|
|
import static com.android.app_base.base.BaseConfig.CODE_SUCCESS;
|
|
import android.app.Application;
|
import android.text.TextUtils;
|
|
import androidx.annotation.NonNull;
|
import androidx.lifecycle.MutableLiveData;
|
|
import com.android.app_base.base.StateViewEnum;
|
import com.android.app_base.base.viewmodel.BaseViewModel;
|
import com.android.app_base.http.ResultData;
|
import com.android.app_base.manager.AppManager;
|
import com.android.app_base.manager.UserManager;
|
import com.android.app_base.utils.RxUtils;
|
import com.android.app_base.utils.ToastUtils;
|
import com.application.zhangshi_app_android.bean.CaptchaImageBean;
|
import com.application.zhangshi_app_android.bean.LoginRequestBean;
|
import com.application.zhangshi_app_android.bean.LoginResponseBean;
|
import com.application.zhangshi_app_android.data.DataRepository;
|
import com.application.zhangshi_app_android.ui.main.MainActivity;
|
|
import java.util.Objects;
|
|
import io.reactivex.Observer;
|
import io.reactivex.disposables.Disposable;
|
|
/**
|
* @author Ljj
|
* @date 2023.03.18. 17:47
|
* @desc 登录注册ViewModel
|
*/
|
public class LoginActivityViewModel extends BaseViewModel<DataRepository> {
|
private MutableLiveData<CaptchaImageBean> captchaImageLiveData = new MutableLiveData<>();
|
private MutableLiveData<String> username = new MutableLiveData<>();
|
private MutableLiveData<String> password = new MutableLiveData<>();
|
private MutableLiveData<String> againPassword = new MutableLiveData<>();
|
private MutableLiveData<Boolean> passwordVisibility = new MutableLiveData<>();
|
private MutableLiveData<Boolean> againPasswordVisibility = new MutableLiveData<>();
|
private MutableLiveData<String> selectLoginBackgroundLiveData = new MutableLiveData<>();//背景图
|
|
private MutableLiveData<String> value = new MutableLiveData<>();
|
public LoginActivityViewModel(@NonNull Application application) {
|
super(application);
|
passwordVisibility.postValue(true);
|
againPasswordVisibility.postValue(true);
|
}
|
|
@Override
|
protected DataRepository initModel() {
|
return DataRepository.getInstance();
|
}
|
|
public void getCaptchaImage(){
|
model.getCaptchaImage()
|
.compose(RxUtils.schedulersTransformer())
|
.subscribe(new Observer<ResultData<CaptchaImageBean>>() {
|
@Override
|
public void onSubscribe(Disposable d) {
|
addSubscribe(d);
|
}
|
|
@Override
|
public void onNext(ResultData<CaptchaImageBean> captchaImageBeanResultData) {
|
if (captchaImageBeanResultData.getCode() == CODE_SUCCESS){
|
captchaImageLiveData.postValue(captchaImageBeanResultData.getData());
|
}else {
|
changeStateView(StateViewEnum.DATA_ERROR);
|
messageLiveData.postValue(captchaImageBeanResultData.getMsg());
|
}
|
}
|
|
@Override
|
public void onError(Throwable e) {
|
messageLiveData.postValue(e.getMessage());
|
}
|
|
@Override
|
public void onComplete() {
|
|
}
|
});
|
}
|
|
public void login(){
|
if (TextUtils.isEmpty(username.getValue()) || TextUtils.isEmpty(password.getValue())||TextUtils.isEmpty(password.getValue())){
|
ToastUtils.showShort("请输入账号密码");
|
return;
|
}
|
if (TextUtils.isEmpty(value.getValue())){
|
ToastUtils.showShort("请输入验证码");
|
return;
|
}
|
if (captchaImageLiveData.getValue() != null){
|
model.login(new LoginRequestBean(username.getValue(),password.getValue(),value.getValue(),captchaImageLiveData.getValue().getUuid()))
|
.compose(RxUtils.schedulersTransformer())
|
.subscribe(new Observer<ResultData<LoginResponseBean>>() {
|
@Override
|
public void onSubscribe(Disposable d) {
|
addSubscribe(d);
|
}
|
|
@Override
|
public void onNext(ResultData<LoginResponseBean> loginResponseBeanResultData) {
|
if (loginResponseBeanResultData.getCode() == CODE_SUCCESS){
|
String token = loginResponseBeanResultData.getData().getToken();
|
UserManager.getInstance().setToken(token);
|
ToastUtils.showShort("登陆成功");
|
AppManager.getAppManager().startActivity(MainActivity.class);
|
}else {
|
changeStateView(StateViewEnum.DATA_ERROR);
|
messageLiveData.postValue(loginResponseBeanResultData.getMsg());
|
}
|
}
|
|
@Override
|
public void onError(Throwable e) {
|
messageLiveData.postValue(e.getMessage());
|
}
|
|
@Override
|
public void onComplete() {
|
|
}
|
});
|
}
|
}
|
public void register(){
|
if (TextUtils.isEmpty(username.getValue()) || TextUtils.isEmpty(password.getValue())||TextUtils.isEmpty(password.getValue())){
|
ToastUtils.showShort("请输入账号密码");
|
return;
|
}
|
if (TextUtils.isEmpty(value.getValue())){
|
ToastUtils.showShort("请输入验证码");
|
return;
|
}
|
if (!Objects.equals(password.getValue(), againPassword.getValue())){
|
ToastUtils.showShort("两次密码输入不一致");
|
return;
|
}
|
if (captchaImageLiveData.getValue() != null){
|
model.register(new LoginRequestBean(username.getValue(),password.getValue(),captchaImageLiveData.getValue().getValue(),captchaImageLiveData.getValue().getUuid()))
|
.compose(RxUtils.schedulersTransformer())
|
.subscribe(new Observer<ResultData<String>>() {
|
@Override
|
public void onSubscribe(Disposable d) {
|
addSubscribe(d);
|
}
|
|
@Override
|
public void onNext(ResultData<String> stringResultData) {
|
if (stringResultData.getCode() == CODE_SUCCESS){
|
ToastUtils.showShort("注册成功");
|
AppManager.getAppManager().finishCurrentActivity();
|
}else {
|
changeStateView(StateViewEnum.DATA_ERROR);
|
messageLiveData.postValue(stringResultData.getMsg());
|
}
|
}
|
|
@Override
|
public void onError(Throwable e) {
|
messageLiveData.postValue(e.getMessage());
|
}
|
|
@Override
|
public void onComplete() {
|
|
}
|
});
|
}
|
}
|
|
public MutableLiveData<CaptchaImageBean> getCaptchaImageLiveData() {
|
return captchaImageLiveData;
|
}
|
|
public void setCaptchaImageLiveData(MutableLiveData<CaptchaImageBean> captchaImageLiveData) {
|
this.captchaImageLiveData = captchaImageLiveData;
|
}
|
|
public MutableLiveData<String> getUsername() {
|
return username;
|
}
|
|
public void setUsername(MutableLiveData<String> username) {
|
this.username = username;
|
}
|
|
public MutableLiveData<String> getPassword() {
|
return password;
|
}
|
|
public MutableLiveData<String> getAgainPassword() {
|
return againPassword;
|
}
|
|
public void setAgainPassword(MutableLiveData<String> againPassword) {
|
this.againPassword = againPassword;
|
}
|
|
public void setPassword(MutableLiveData<String> password) {
|
this.password = password;
|
}
|
|
public MutableLiveData<Boolean> getPasswordVisibility() {
|
return passwordVisibility;
|
}
|
|
public void setPasswordVisibility(MutableLiveData<Boolean> passwordVisibility) {
|
this.passwordVisibility = passwordVisibility;
|
}
|
|
public MutableLiveData<Boolean> getAgainPasswordVisibility() {
|
return againPasswordVisibility;
|
}
|
|
public void setAgainPasswordVisibility(MutableLiveData<Boolean> againPasswordVisibility) {
|
this.againPasswordVisibility = againPasswordVisibility;
|
}
|
|
public MutableLiveData<String> getValue() {
|
return value;
|
}
|
|
public void setValue(MutableLiveData<String> value) {
|
this.value = value;
|
}
|
|
public MutableLiveData<String> getSelectLoginBackgroundLiveData() {
|
return selectLoginBackgroundLiveData;
|
}
|
|
public void setSelectLoginBackgroundLiveData(MutableLiveData<String> selectLoginBackgroundLiveData) {
|
this.selectLoginBackgroundLiveData = selectLoginBackgroundLiveData;
|
}
|
}
|