Procházet zdrojové kódy

登录流程优化

詹子聪 před 5 roky
rodič
revize
860e0d3480

+ 51 - 1
app/src/main/java/com/miekir/eden/ui/home/tool/SystemPresenter.java

@@ -1,8 +1,15 @@
 package com.miekir.eden.ui.home.tool;
 
+import android.text.TextUtils;
+
 import com.miekir.eden.base.ApiService;
+import com.miekir.eden.base.CommonApi;
+import com.miekir.eden.bean.BeiUser;
+import com.miekir.eden.bean.IPInfoBean;
 import com.miekir.eden.bean.SystemBean;
+import com.miekir.eden.constant.ConstantString;
 import com.miekir.eden.constant.EdenError;
+import com.miekir.eden.manager.EdenManager;
 import com.miekir.eden.net.RetrofitHelper;
 import com.miekir.mvp.presenter.BasePresenter;
 import com.miekir.network.core.base.BaseObserver;
@@ -36,7 +43,21 @@ public class SystemPresenter extends BasePresenter<ISystemView> {
                     @Override
                     public void onSuccess(int code, SystemBean result) {
                         if (getView() != null) {
-                            getView().onGetConfigResult(true, EdenError.SUCCESS, result);
+                            // 老用户直接登录
+                            BeiUser userInfo = EdenManager.getInstance().getBeiUser();
+                            long existTime = System.currentTimeMillis() - userInfo.registerTimeMillis;
+                            boolean isOldUser = Math.abs(existTime) > (24 * 60 * 60 * 1000);
+                            if (isOldUser || userInfo.vip) {
+                                getView().onGetConfigResult(true, EdenError.SUCCESS, result);
+                                return;
+                            }
+
+                            if (TextUtils.equals(userInfo.email, ConstantString.NAME_ADMIN)) {
+                                getView().onGetConfigResult(true, EdenError.SUCCESS, result);
+                                return;
+                            }
+
+                            getRegionInfo(result);
                         }
                     }
 
@@ -49,6 +70,35 @@ public class SystemPresenter extends BasePresenter<ISystemView> {
                 });
     }
 
+    private void getRegionInfo(SystemBean systemBean) {
+        RetrofitHelper.getInstance()
+                .getRequestApi(CommonApi.class)
+                .getIPInfo()
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new BaseObserver<IPInfoBean>() {
+                    @Override
+                    public void onSuccess(int code, IPInfoBean ipInfo) {
+                        if (getView() != null) {
+                            // 暂不支持中国地区
+                            if ((ipInfo == null || TextUtils.equals("CN", ipInfo.getCountrycode()))) {
+                                getView().onGetConfigResult(false, EdenError.REGION_INVALID, null);
+                                return;
+                            }
+                            getView().onGetConfigResult(true, EdenError.SUCCESS, systemBean);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(int code, Throwable e, String errMsg) {
+                        if (getView() != null) {
+                            // 获取区域信息失败
+                            getView().onGetConfigResult(false, EdenError.REGION_GET_FAILED, null);
+                        }
+                    }
+                });
+    }
+
 
     /**
      * 设置是否爬虫

+ 1 - 51
app/src/main/java/com/miekir/eden/ui/mine/login/LoginPresenter.java

@@ -1,12 +1,7 @@
 package com.miekir.eden.ui.mine.login;
 
-import android.text.TextUtils;
-
 import com.miekir.eden.base.ApiService;
-import com.miekir.eden.base.CommonApi;
 import com.miekir.eden.bean.BeiUser;
-import com.miekir.eden.bean.IPInfoBean;
-import com.miekir.eden.constant.ConstantString;
 import com.miekir.eden.constant.EdenError;
 import com.miekir.eden.net.RetrofitHelper;
 import com.miekir.mvp.presenter.BasePresenter;
@@ -34,25 +29,7 @@ public class LoginPresenter extends BasePresenter<ILoginView> {
                             return;
                         }
 
-                        if (userInfo == null) {
-                            getView().onLoginResult(null, EdenError.COMMON);
-                            return;
-                        }
-
-                        // 老用户直接登录
-                        long existTime = System.currentTimeMillis() - userInfo.registerTimeMillis;
-                        boolean isOldUser = Math.abs(existTime) > (24 * 60 * 60 * 1000);
-                        if (isOldUser || userInfo.vip) {
-                            getView().onLoginResult(userInfo, EdenError.SUCCESS);
-                            return;
-                        }
-
-                        if (TextUtils.equals(userInfo.email, ConstantString.NAME_ADMIN)) {
-                            getView().onLoginResult(userInfo, EdenError.SUCCESS);
-                            return;
-                        }
-
-                        getRegionInfo(userInfo);
+                        getView().onLoginResult(userInfo, EdenError.SUCCESS);
                     }
 
                     @Override
@@ -64,32 +41,5 @@ public class LoginPresenter extends BasePresenter<ILoginView> {
                 });
     }
 
-    private void getRegionInfo(BeiUser user) {
-        RetrofitHelper.getInstance()
-                .getRequestApi(CommonApi.class)
-                .getIPInfo()
-                .subscribeOn(Schedulers.io())
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(new BaseObserver<IPInfoBean>() {
-                    @Override
-                    public void onSuccess(int code, IPInfoBean ipInfo) {
-                        if (getView() != null) {
-                            // 暂不支持中国地区
-                            if ((ipInfo == null || TextUtils.equals("CN", ipInfo.getCountrycode()))) {
-                                getView().onLoginResult(null, EdenError.REGION_INVALID);
-                                return;
-                            }
-                            getView().onLoginResult(user, EdenError.SUCCESS);
-                        }
-                    }
 
-                    @Override
-                    public void onFailure(int code, Throwable e, String errMsg) {
-                        if (getView() != null) {
-                            // 获取区域信息失败
-                            getView().onLoginResult(null, EdenError.REGION_GET_FAILED);
-                        }
-                    }
-                });
-    }
 }