mirror of
https://gitee.com/willfree/min-vpn-client_v2.git
synced 2026-06-03 15:36:14 +08:00
finished activity: register
This commit is contained in:
+229
-1
@@ -7,5 +7,233 @@ package com.pkusz.min_vpn_client.activity.register;
|
||||
* @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室
|
||||
*/
|
||||
|
||||
public class RegisterActivity {
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.pkusz.min_vpn_client.R;
|
||||
import com.pkusz.min_vpn_client.activity.base.MINVpnBaseActivity;
|
||||
import com.pkusz.min_vpn_client.activity.login.LoginActivity;
|
||||
import com.pkusz.min_vpn_client.activity.setting.SettingActivity;
|
||||
import com.pkusz.min_vpn_client.utils.AccountValidatorRegexUtil;
|
||||
import com.pkusz.min_vpn_client.utils.Base64Util;
|
||||
import com.pkusz.min_vpn_client.utils.KeyManager;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import br.com.simplepass.loadingbutton.customViews.CircularProgressButton;
|
||||
import cn.qjm253.min_vpn.extensions.ActivityExtensionsKt;
|
||||
import cn.qjm253.quick_android_base.GlideApp;
|
||||
import cn.qjm253.quick_android_base.extensions.ContextExtensionKt;
|
||||
import cn.qjm253.quick_android_base.extensions.ViewExtensionKt;
|
||||
import cn.qjm253.quick_android_base.util.DisplayUtils;
|
||||
import cn.qjm253.quick_android_custom_view.other.ClearAbleEditText;
|
||||
import cn.qjm253.quick_android_easy_bar.EasyBar;
|
||||
import cn.qjm253.quick_android_easy_bar.EasyBarExtensionsKt;
|
||||
import kotlin.Unit;
|
||||
import kotlin.jvm.functions.Function1;
|
||||
|
||||
public class RegisterActivity extends MINVpnBaseActivity<RegisterActivityPresenter>
|
||||
implements RegisterActivityContract.View{
|
||||
// 界面变量区
|
||||
private EasyBar easyBar;
|
||||
private ImageView imgLogo;
|
||||
private CircularProgressButton btnRegister;
|
||||
private ClearAbleEditText etPhoneNumber;
|
||||
private ClearAbleEditText etUsername;
|
||||
private ClearAbleEditText etPassword;
|
||||
private ClearAbleEditText etEmail;
|
||||
private ClearAbleEditText etInviteCode;
|
||||
private ClearAbleEditText etRePassword;
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_register);
|
||||
// 初始化各个组件
|
||||
easyBar=findViewById(R.id.easyBar);
|
||||
imgLogo=findViewById(R.id.imgLogo);
|
||||
btnRegister=findViewById(R.id.btnRegister);
|
||||
etPhoneNumber=findViewById(R.id.etPhoneNumber);
|
||||
etUsername=findViewById(R.id.etUsername);
|
||||
etPassword=findViewById(R.id.etPassword);
|
||||
etEmail=findViewById(R.id.etEmail);
|
||||
etInviteCode=findViewById(R.id.etInviteCode);
|
||||
etRePassword=findViewById(R.id.etRePassword);
|
||||
|
||||
initView();
|
||||
}
|
||||
|
||||
private void initView(){
|
||||
// 初始化bar
|
||||
EasyBarExtensionsKt.init(easyBar, EasyBar.Mode.ICON, "",
|
||||
(Function1<View, Unit>) view -> {
|
||||
onBackPressed();
|
||||
return null;
|
||||
},
|
||||
(Function1<View, Unit>) view -> {
|
||||
return null;
|
||||
},
|
||||
R.drawable.scan, R.drawable.setting, "", "", R.string.register,
|
||||
true, R.color.white);
|
||||
|
||||
GlideApp.with(this)
|
||||
.load(R.drawable.logo)
|
||||
.circleCrop()
|
||||
.into(imgLogo);
|
||||
|
||||
btnRegister.setBackgroundResource(R.drawable.button_shape_default);
|
||||
btnRegister.setOnClickListener(v->{
|
||||
ContextExtensionKt.hideSoftKeyboard(this,btnRegister);
|
||||
btnRegister.startMorphAnimation();
|
||||
|
||||
String phone= Objects.requireNonNull(etPhoneNumber.getText()).toString().trim();
|
||||
if(phone.length()==0){
|
||||
showWarning("手机号不能为空");
|
||||
btnRegister.revertAnimation();
|
||||
return;
|
||||
}
|
||||
if(!AccountValidatorRegexUtil.INSTANCE.isMobile(phone)){
|
||||
showWarning("请输入有效的手机号");
|
||||
btnRegister.revertAnimation();
|
||||
return;
|
||||
}
|
||||
|
||||
String email = Objects.requireNonNull(etEmail.getText()).toString().trim();
|
||||
if(email.length()==0){
|
||||
showWarning("电子邮箱不能为空");
|
||||
btnRegister.revertAnimation();
|
||||
return;
|
||||
}
|
||||
if(!AccountValidatorRegexUtil.INSTANCE.isEmail(email)){
|
||||
showWarning("请输入有效的电子邮箱");
|
||||
btnRegister.revertAnimation();
|
||||
return;
|
||||
}
|
||||
|
||||
String username= Objects.requireNonNull(etUsername.getText()).toString().trim();
|
||||
String password= Objects.requireNonNull(etPassword.getText()).toString().trim();
|
||||
String rePassword= Objects.requireNonNull(etPassword.getText()).toString().trim();
|
||||
String inviteCode= Objects.requireNonNull(etInviteCode.getText()).toString().trim();
|
||||
if(username.length()==0 || password.length()==0 || rePassword.length()==0 || inviteCode.length()==0){
|
||||
showWarning("请将信息填写完整");
|
||||
btnRegister.revertAnimation();
|
||||
return;
|
||||
}
|
||||
if(!AccountValidatorRegexUtil.INSTANCE.isUsername(username)){
|
||||
showWarning("请输入有效的用户名,用户名长度需要大于0小于20");
|
||||
btnRegister.revertAnimation();
|
||||
return;
|
||||
}
|
||||
if(!AccountValidatorRegexUtil.INSTANCE.isPassword(password)){
|
||||
showWarning("请输入有效的密码,密码为8-16位,必须包含大小写字母和特殊符号");
|
||||
btnRegister.revertAnimation();
|
||||
return;
|
||||
}
|
||||
if(!AccountValidatorRegexUtil.INSTANCE.isPassword(rePassword)){
|
||||
showWarning("请输入有效的密码,密码为8-16位,必须包含大小写字母和特殊符号");
|
||||
btnRegister.revertAnimation();
|
||||
return;
|
||||
}
|
||||
if(!AccountValidatorRegexUtil.INSTANCE.isInviteCode(inviteCode)){
|
||||
showWarning("请输入有效的邀请码,邀请码长度需要大于0小于20");
|
||||
btnRegister.revertAnimation();
|
||||
return;
|
||||
}
|
||||
if(!password.equals(rePassword)){
|
||||
showWarning("两次输入的密码不一致");
|
||||
btnRegister.revertAnimation();
|
||||
return;
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
username= Base64Util.Base64PlusEncode(username);
|
||||
}else{
|
||||
showWarning("username base64 error");
|
||||
return;
|
||||
}
|
||||
|
||||
System.out.println("username: "+username);
|
||||
|
||||
// todo: 这里存疑
|
||||
byte[] certification= KeyManager.INSTANCE.initKeyChain("/"+username)
|
||||
.getCertification("/"+username).getSignature();
|
||||
|
||||
// todo: 发送注册信息
|
||||
|
||||
});
|
||||
|
||||
// 监听键盘是否弹起
|
||||
ActivityExtensionsKt.listenKeyboardVisible(this,(isOpen)->{
|
||||
if(isOpen){
|
||||
ViewExtensionKt.animer(imgLogo,
|
||||
ViewExtensionKt.scaleXAnimation(imgLogo,1f, 0.5f),
|
||||
ViewExtensionKt.scaleYAnimation(imgLogo,1f, 0.5f),
|
||||
ViewExtensionKt.transYAnimation(imgLogo,
|
||||
0f, -DisplayUtils.dp2px(this, 40)),
|
||||
ViewExtensionKt.transYAnimation(etUsername,
|
||||
0f, -DisplayUtils.dp2px(this, 90)),
|
||||
ViewExtensionKt.transYAnimation(etPassword,
|
||||
0f, -DisplayUtils.dp2px(this, 90)),
|
||||
ViewExtensionKt.transYAnimation(etRePassword,
|
||||
0f, -DisplayUtils.dp2px(this, 90)),
|
||||
ViewExtensionKt.transYAnimation(etPhoneNumber,
|
||||
0f, -DisplayUtils.dp2px(this, 90)),
|
||||
ViewExtensionKt.transYAnimation(etInviteCode,
|
||||
0f, -DisplayUtils.dp2px(this, 90)),
|
||||
ViewExtensionKt.transYAnimation(etEmail,
|
||||
0f, -DisplayUtils.dp2px(this, 90)),
|
||||
ViewExtensionKt.transYAnimation(btnRegister,
|
||||
0f, -DisplayUtils.dp2px(this, 90))
|
||||
);
|
||||
}else{
|
||||
ViewExtensionKt.animer(imgLogo,
|
||||
ViewExtensionKt.scaleXAnimation(imgLogo, 0.5f,1f),
|
||||
ViewExtensionKt.scaleYAnimation(imgLogo, 0.5f,1f),
|
||||
ViewExtensionKt.transYAnimation(imgLogo,
|
||||
-DisplayUtils.dp2px(this, 40),0f),
|
||||
ViewExtensionKt.transYAnimation(etUsername,
|
||||
-DisplayUtils.dp2px(this, 90),0f),
|
||||
ViewExtensionKt.transYAnimation(etPassword,
|
||||
-DisplayUtils.dp2px(this, 90),0f),
|
||||
ViewExtensionKt.transYAnimation(etRePassword,
|
||||
-DisplayUtils.dp2px(this, 90),0f),
|
||||
ViewExtensionKt.transYAnimation(etPhoneNumber,
|
||||
-DisplayUtils.dp2px(this, 90),0f),
|
||||
ViewExtensionKt.transYAnimation(etInviteCode,
|
||||
-DisplayUtils.dp2px(this, 90),0f),
|
||||
ViewExtensionKt.transYAnimation(etEmail,
|
||||
-DisplayUtils.dp2px(this, 90),0f),
|
||||
ViewExtensionKt.transYAnimation(btnRegister,
|
||||
-DisplayUtils.dp2px(this, 90),0f)
|
||||
);
|
||||
}
|
||||
return null;
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public RegisterActivityPresenter onCreatePresenter() {
|
||||
return new RegisterActivityPresenter(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerSuccess() {
|
||||
Toast.makeText(getApplicationContext(),"注册成功",Toast.LENGTH_SHORT).show();
|
||||
ContextExtensionKt.jumpTo(this, LoginActivity.class);
|
||||
btnRegister.revertAnimation();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerFailed(String errMsg) {
|
||||
toast("注册失败: "+errMsg);
|
||||
btnRegister.revertAnimation();
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -19,16 +19,16 @@ public class RegisterActivityModel implements RegisterActivityContract.Model{
|
||||
|
||||
@Override
|
||||
public void register(RegisterRequest registerRequest) {
|
||||
|
||||
mPresenter.registerSuccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerWithSafetyInfo(RegisterRequest registerRequest, Context context) {
|
||||
|
||||
mPresenter.registerSuccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uploadRegisterFacePicture(String username, RegisterRequest registerRequest, Context context) {
|
||||
|
||||
// 废弃接口。
|
||||
}
|
||||
}
|
||||
|
||||
+34
-1
@@ -7,5 +7,38 @@ package com.pkusz.min_vpn_client.activity.register;
|
||||
* @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室
|
||||
*/
|
||||
|
||||
public class RegisterActivityPresenter {
|
||||
import android.content.Context;
|
||||
|
||||
import com.pkusz.min_vpn_client.model.request.RegisterRequest;
|
||||
|
||||
public class RegisterActivityPresenter extends RegisterActivityContract.Presenter{
|
||||
public RegisterActivityPresenter(RegisterActivity registerActivity){
|
||||
mView=registerActivity;
|
||||
mModel=new RegisterActivityModel(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
void registerSuccess() {
|
||||
mView.registerSuccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
void registerFailed(String errMsg) {
|
||||
mView.registerFailed(errMsg);
|
||||
}
|
||||
|
||||
@Override
|
||||
void register(RegisterRequest registerRequest) {
|
||||
mModel.register(registerRequest);
|
||||
}
|
||||
|
||||
@Override
|
||||
void registerWithSafetyInfo(RegisterRequest registerRequest, Context context) {
|
||||
mModel.registerWithSafetyInfo(registerRequest,context);
|
||||
}
|
||||
|
||||
@Override
|
||||
void uploadRegisterFacePicture(String username, RegisterRequest registerRequest, Context context) {
|
||||
mModel.uploadRegisterFacePicture(username, registerRequest, context);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user