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
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));
|
|
}
|
|
}
|
|
|
|
}
|
|
|