|
|
@@ -1,12 +1,20 @@
|
|
|
package com.miekir.eden.ui.mine.login;
|
|
|
|
|
|
+import android.text.TextUtils;
|
|
|
+
|
|
|
+import com.miekir.eden.R;
|
|
|
import com.miekir.eden.base.ApiService;
|
|
|
+import com.miekir.eden.base.CommonApi;
|
|
|
import com.miekir.eden.bean.BeiUser;
|
|
|
+import com.miekir.eden.constant.ConstantString;
|
|
|
import com.miekir.eden.constant.EdenError;
|
|
|
+import com.miekir.eden.exception.BeiException;
|
|
|
import com.miekir.eden.net.RetrofitHelper;
|
|
|
+import com.miekir.eden.tool.StringTool;
|
|
|
import com.miekir.mvp.presenter.BasePresenter;
|
|
|
import com.miekir.network.core.base.BaseObserver;
|
|
|
|
|
|
+import io.reactivex.Observable;
|
|
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
|
|
import io.reactivex.schedulers.Schedulers;
|
|
|
|
|
|
@@ -19,8 +27,20 @@ public class LoginPresenter extends BasePresenter<ILoginView> {
|
|
|
|
|
|
public void submitLogin(String email, String password) {
|
|
|
RetrofitHelper.getInstance()
|
|
|
- .getRequestApi(ApiService.class)
|
|
|
- .loginOrRegister(email, password)
|
|
|
+ .getRequestApi(CommonApi.class)
|
|
|
+ .getIPInfo()
|
|
|
+ .flatMap(ipInfo -> {
|
|
|
+ // 暂不支持中国地区
|
|
|
+ if (!TextUtils.equals(email, ConstantString.NAME_ADMIN)) {
|
|
|
+ if ((ipInfo == null || TextUtils.equals("CN", ipInfo.getCountrycode()))) {
|
|
|
+ return Observable.error(new BeiException(EdenError.REGION_INVALID, StringTool.getString(R.string.login_area_not_support)));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return RetrofitHelper.getInstance()
|
|
|
+ .getRequestApi(ApiService.class)
|
|
|
+ .loginOrRegister(email, password);
|
|
|
+ })
|
|
|
.subscribeOn(Schedulers.io())
|
|
|
.observeOn(AndroidSchedulers.mainThread())
|
|
|
.subscribe(new BaseObserver<BeiUser>() {
|
|
|
@@ -34,7 +54,11 @@ public class LoginPresenter extends BasePresenter<ILoginView> {
|
|
|
@Override
|
|
|
public void onFailure(int code, Throwable e, String errMsg) {
|
|
|
if (getView() != null) {
|
|
|
- getView().onLoginResult(null, EdenError.COMMON);
|
|
|
+ if (e instanceof BeiException) {
|
|
|
+ getView().onLoginResult(null, ((BeiException) e).getCode());
|
|
|
+ } else {
|
|
|
+ getView().onLoginResult(null, EdenError.COMMON);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
});
|