You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
4.8 KiB

package com.community.pocket.ui.resetpwd;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import com.community.pocket.R;
import com.community.pocket.data.resetpwd.ResetPwdRequest;
import com.community.pocket.util.ValidUtil;
/**
* 重置密码UI数据管理
*/
class ResetPwdViewModel extends ViewModel {
//重置密码第一步校验状态
private MutableLiveData<ResetPwdFormState.Step1> resetPwdFormStep1 = new MutableLiveData<>();
//重置密码第一步验证结果
private MutableLiveData<ResetPwdResponse> resetPwdResultStep1 = new MutableLiveData<>();
//重置密码第二步校验状态
private MutableLiveData<ResetPwdFormState.Step2> resetPwdFormStep2 = new MutableLiveData<>();
//重置密码第二步发送验证码结果
private MutableLiveData<ResetPwdResponse> sendCodeResponse = new MutableLiveData<>();
//重置密码验证码校验结果
private MutableLiveData<ResetPwdResponse> checkCodeResponse = new MutableLiveData<>();
//重置密码第三步校验状态
private MutableLiveData<ResetPwdFormState.Step3> resetPwdFormStep3 = new MutableLiveData<>();
//重置密码第三部重置结果
private MutableLiveData<ResetPwdResponse> resetPwdResultStep3 = new MutableLiveData<>();
//重置密码请求
private ResetPwdRequest resetPwdRequest;
ResetPwdViewModel(ResetPwdRequest resetPwdRequest) {
this.resetPwdRequest = resetPwdRequest;
}
MutableLiveData<ResetPwdFormState.Step1> getResetPwdFormStep1() {
return resetPwdFormStep1;
}
MutableLiveData<ResetPwdResponse> getResetPwdResultStep1() {
return resetPwdResultStep1;
}
MutableLiveData<ResetPwdFormState.Step2> getResetPwdFormStep2() {
return resetPwdFormStep2;
}
MutableLiveData<ResetPwdResponse> getSendCodeResponse() {
return sendCodeResponse;
}
MutableLiveData<ResetPwdResponse> getCheckCodeResponse() {
return checkCodeResponse;
}
MutableLiveData<ResetPwdFormState.Step3> getResetPwdFormStep3() {
return resetPwdFormStep3;
}
MutableLiveData<ResetPwdResponse> getResetPwdResultStep3() {
return resetPwdResultStep3;
}
//重置密码第一步
void checkUser(String username, String email) {
resetPwdRequest.checkUser(resetPwdResultStep1, username, email);
}
//重置密码第二步
void sendCode(String username, String email) {
resetPwdRequest.sendCode(sendCodeResponse, username, email);
}
//重置密码第二步
void checkCode(String username, String code) {
resetPwdRequest.checkCode(checkCodeResponse, username, code);
}
//重置密码第三步
void resetPwd(String username, String password) {
resetPwdRequest.resetPwd(resetPwdResultStep3, username, password);
}
//监听重置密码第一步表单触发校验
void resetpwdStep1Changed(String username, String email) {
if (!ValidUtil.usernamevalid(username)) {
resetPwdFormStep1.setValue(new ResetPwdFormState.Step1(R.string.invalid_username, null));
} else if (!ValidUtil.emailValid(email)) {
resetPwdFormStep1.setValue(new ResetPwdFormState.Step1(null, R.string.invalid_email));
} else {
resetPwdFormStep1.setValue(new ResetPwdFormState.Step1(true));
}
}
//TODO 异步更新验证码状态
private void resetpwdStep2Changed() {
// int second=60;
// while (second-->0) {
// try {
// TimeUnit.SECONDS.sleep(1);
// resetPwdFormStep2.setValue(new ResetPwdFormState.Step2(R.string.invalid_send_CAPTCHA,second));
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// }
}
//监听重置密码第二步表单触发校验
void resetpwdStep2Changed(String code) {
if (!ValidUtil.CAPTCHAValid(code)) {
resetPwdFormStep2.setValue(new ResetPwdFormState.Step2(R.string.invalid_CAPTCHA));
} else {
resetPwdFormStep2.setValue(new ResetPwdFormState.Step2(true));
}
}
//监听重置密码第三步表单触发校验
void resetpwdStep3Changed(String password, String confirmPassword) {
if (!ValidUtil.passwordvalid(password)) {
resetPwdFormStep3.setValue(new ResetPwdFormState.Step3(R.string.invalid_password, null));
} else if (!ValidUtil.passwordvalid(confirmPassword)) {
resetPwdFormStep3.setValue(new ResetPwdFormState.Step3(null, R.string.invalid_password));
} else if (!password.equals(confirmPassword)) {
resetPwdFormStep3.setValue(new ResetPwdFormState.Step3(null, R.string.invalid_confirm_password));
} else {
resetPwdFormStep3.setValue(new ResetPwdFormState.Step3(true));
}
}
}