diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/BindCodeActivity.java b/app/src/main/java/com/yizhuan/erban/ui/login/BindCodeActivity.java index 4f1091a09..ce0227a0e 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/login/BindCodeActivity.java +++ b/app/src/main/java/com/yizhuan/erban/ui/login/BindCodeActivity.java @@ -29,10 +29,7 @@ import com.yizhuan.xchat_android_core.auth.exception.ShowPhoneCodeException; import com.yizhuan.xchat_android_core.code.CodeType; import com.yizhuan.xchat_android_core.statistic.StatisticManager; import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol; -import com.yizhuan.xchat_android_core.user.bean.UserInfo; -import com.yizhuan.xchat_android_core.user.event.NeedCompleteInfoEvent; - -import org.greenrobot.eventbus.EventBus; +import com.yizhuan.xchat_android_core.user.UserModel; import java.text.SimpleDateFormat; import java.util.Date; @@ -46,26 +43,24 @@ import io.reactivex.disposables.Disposable; * @author zhouxiangfeng * @date 17/2/26 */ -public class BindCodeActivity extends BaseLoginAct { - - private static final String TAG = "LoginVertificationActivity"; +public class BindCodeActivity extends BaseLoginAct { private CodeEditText codeEt; - private TextView tvGetCode,tvDesc,tvSecond; + private TextView tvGetCode, tvDesc, tvSecond; private String mPhone; private boolean isSuperAdmin = false; private CodeDownDescTimer timer; private static final String TYPE_SMS = "1"; - public static void start(Context context,String phone) { + public static void start(Context context, String phone) { Intent intent = new Intent(context, BindCodeActivity.class); - intent.putExtra("phone",phone); + intent.putExtra("phone", phone); context.startActivity(intent); } - public static void startForResult(Activity context,String phone, int requestCode) { + public static void startForResult(Activity context, String phone, int requestCode) { Intent intent = new Intent(context, BindCodeActivity.class); - intent.putExtra("phone",phone); + intent.putExtra("phone", phone); context.startActivityForResult(intent, requestCode); // startActivityForResult会导致singletop,singletask失效 } @@ -142,7 +137,7 @@ public class BindCodeActivity extends BaseLoginAct { */ @SuppressLint("CheckResult") private void getSmsCode() { - if (mPhone.length() != 11){ + if (mPhone.length() != 11) { return; } AuthModel.get() @@ -157,7 +152,7 @@ public class BindCodeActivity extends BaseLoginAct { @Override public void onSuccess(String s) { - tvDesc.setText(getString(R.string.str_send_code_success)+mPhone); + tvDesc.setText(getString(R.string.str_send_code_success) + mPhone); startCountDownTimer(); toast(s); @@ -167,13 +162,12 @@ public class BindCodeActivity extends BaseLoginAct { public void onError(Throwable e) { toast(e.getMessage()); // finish(); - LogUtils.e( "获取短信失败!"); + LogUtils.e("获取短信失败!"); } }); } - @Override public void dealWithLoginError(Throwable e) { if (!(e instanceof IsSuperAdminException)) { @@ -209,7 +203,7 @@ public class BindCodeActivity extends BaseLoginAct { private void startCountDownTimer() { stopCountDownTimer(); - timer = new CodeDownDescTimer(tvSecond, tvGetCode,60000, 1000); + timer = new CodeDownDescTimer(tvSecond, tvGetCode, 60000, 1000); timer.start(); } @@ -222,34 +216,19 @@ public class BindCodeActivity extends BaseLoginAct { private void bindPhone() { getDialogManager().showProgressDialog(BindCodeActivity.this, "正在绑定请稍后..."); - AuthModel.get().bindPhone( - mPhone, - codeEt.getText().toString() - ) + AuthModel.get().bindPhone(mPhone, codeEt.getText().toString()) .compose(bindUntilEvent(ActivityEvent.DESTROY)) - .subscribe(new SingleObserver() { - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onSuccess(UserInfo userInfo) { - if (TextUtils.isEmpty(userInfo.getNick()) || TextUtils.isEmpty(userInfo.getAvatar())) { - EventBus.getDefault().post(new NeedCompleteInfoEvent()); - } - getDialogManager().dismissDialog(); - toast("绑定手机号成功"); - setResult(RESULT_OK); - finish(); - } - - @Override - public void onError(Throwable e) { - getDialogManager().dismissDialog(); - toast(e.getMessage()); - } - }); + .doOnSuccess(s -> { + toast("绑定手机号成功"); + setResult(RESULT_OK); + }) + .doOnError(throwable -> toast(throwable.getMessage())) + .flatMap(s -> UserModel.get().updateCurrentUserInfo()) + .doFinally(() -> { + getDialogManager().dismissDialog(); + finish(); + }) + .subscribe(); } } diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/BindPhoneActivity.java b/app/src/main/java/com/yizhuan/erban/ui/login/BindPhoneActivity.java index 4f28bbd38..e64de11fe 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/login/BindPhoneActivity.java +++ b/app/src/main/java/com/yizhuan/erban/ui/login/BindPhoneActivity.java @@ -22,8 +22,8 @@ import com.yizhuan.xchat_android_library.utils.NetworkUtils; import com.yizhuan.xchat_android_library.utils.TextWatcherWrapper; /** - * @author zhouxiangfeng - * @date 17/2/26 + * 由于所有用户都需要强制绑定手机,所以理论上这里只有MainActivity会调用到这个界面 + * 但是为了以防万一,其它调用绑定手机的地方也改为调用这个页面了 */ public class BindPhoneActivity extends BaseActivity implements View.OnClickListener { @@ -49,11 +49,6 @@ public class BindPhoneActivity extends BaseActivity implements View.OnClickListe context.startActivity(intent); } - public static void startForResult(Activity context, int requestCode) { - Intent intent = new Intent(context, BindPhoneActivity.class); - context.startActivityForResult(intent, requestCode); // startActivityForResult会导致singletop,singletask失效 - } - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -100,7 +95,7 @@ public class BindPhoneActivity extends BaseActivity implements View.OnClickListe toast(accountValidator.getErrorMessage()); return; } - BindCodeActivity.startForResult(BindPhoneActivity.this,accountEt.getText().toString(),REQUEST_CODE); + BindCodeActivity.startForResult(BindPhoneActivity.this, accountEt.getText().toString(), REQUEST_CODE); break; case R.id.iv_back: @@ -115,7 +110,7 @@ public class BindPhoneActivity extends BaseActivity implements View.OnClickListe @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - if (requestCode == REQUEST_CODE &&resultCode == RESULT_OK){ + if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { finish(); } } @@ -143,7 +138,6 @@ public class BindPhoneActivity extends BaseActivity implements View.OnClickListe } - @Override public void onBackPressed() { handleFinish(); diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/auth/AuthModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/auth/AuthModel.java index 16a064fbe..6c848e400 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/auth/AuthModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/auth/AuthModel.java @@ -12,7 +12,6 @@ import com.netease.nimlib.sdk.NIMClient; import com.netease.nimlib.sdk.Observer; import com.netease.nimlib.sdk.RequestCallback; import com.netease.nimlib.sdk.RequestCallbackWrapper; -import com.netease.nimlib.sdk.StatusBarNotificationConfig; import com.netease.nimlib.sdk.StatusCode; import com.netease.nimlib.sdk.auth.AuthService; import com.netease.nimlib.sdk.auth.AuthServiceObserver; @@ -31,7 +30,6 @@ import com.yizhuan.xchat_android_core.auth.event.LogoutEvent; import com.yizhuan.xchat_android_core.auth.exception.BanAccountException; import com.yizhuan.xchat_android_core.auth.exception.BigHeadPhoneException; import com.yizhuan.xchat_android_core.auth.exception.IsSuperAdminException; -import com.yizhuan.xchat_android_core.auth.exception.OldMemberException; import com.yizhuan.xchat_android_core.auth.exception.ShowPhoneCodeException; import com.yizhuan.xchat_android_core.base.BaseModel; import com.yizhuan.xchat_android_core.bean.response.ServiceResult; @@ -44,8 +42,6 @@ import com.yizhuan.xchat_android_core.initial.InitialModel; import com.yizhuan.xchat_android_core.linked.LinkedModel; import com.yizhuan.xchat_android_core.linked.bean.LinkedInfo; import com.yizhuan.xchat_android_core.user.UserModel; -import com.yizhuan.xchat_android_core.user.bean.UserInfo; -import com.yizhuan.xchat_android_core.user.event.LoadLoginUserInfoEvent; import com.yizhuan.xchat_android_core.utils.APIEncryptUtil; import com.yizhuan.xchat_android_core.utils.CheckUtils; import com.yizhuan.xchat_android_core.utils.OldHttpErrorHandleUtil; @@ -947,38 +943,21 @@ public class AuthModel extends BaseModel implements IAuthModel { * @return */ @Override - public Single bindPhone(String phone, String code) { + public Single bindPhone(String phone, String code) { if (currentAccountInfo == null || currentAccountInfo.getUid() == 0) { return Single.error(new Throwable("获取不到当前用户UID")); } - return api.bindPhone( String.valueOf(currentAccountInfo.getUid()), phone, code, getTicket() ) - .flatMap(new Function>() { - @Override - public SingleSource apply(ServiceResult serviceResult) throws Exception { - if (!serviceResult.isSuccess()) { - return Single.error(new Throwable(serviceResult.getMessage())); - } - return Single.just("绑定手机成功"); - } - }) - .flatMap(new Function>() { - @Override - public SingleSource apply(String s) throws Exception { - return UserModel.get().updateCurrentUserInfo(); - } - }) - .doOnSuccess(new Consumer() { - @Override - public void accept(UserInfo info) throws Exception { - //在绑定手机号成功时,重新发出此事件 - EventBus.getDefault().post(new LoadLoginUserInfoEvent()); + .flatMap(serviceResult -> { + if (!serviceResult.isSuccess()) { + return Single.error(new Throwable(serviceResult.getMessage())); } + return Single.just("绑定手机成功"); }) .compose(RxHelper.handleSchedulers()); } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/auth/IAuthModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/auth/IAuthModel.java index c7ce38e99..6f4df2cc1 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/auth/IAuthModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/auth/IAuthModel.java @@ -100,7 +100,7 @@ public interface IAuthModel extends IModel{ * @param code * @return */ - Single bindPhone(String phone, String code); + Single bindPhone(String phone, String code); /** * 获取手机验证码 diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/user/UserModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/user/UserModel.java index 4220ed82f..e699cfa31 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/user/UserModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/user/UserModel.java @@ -36,6 +36,7 @@ import com.yizhuan.xchat_android_core.user.event.NeedCompleteInfoEvent; import com.yizhuan.xchat_android_core.utils.net.RxHelper; import com.yizhuan.xchat_android_library.net.rxnet.RxNet; import com.yizhuan.xchat_android_library.utils.ListUtils; +import com.yizhuan.xchat_android_library.utils.SingleToastUtil; import com.yizhuan.xchat_android_library.utils.StringUtils; import com.yizhuan.xchat_android_library.utils.codec.DESUtils; @@ -150,6 +151,7 @@ public final class UserModel extends BaseModel implements IUserModel { //如果没有绑定手机号,提醒去绑定手机号 if (userInfo.getDefUser() != 4 && !userInfo.isBindPhone()) { EventBus.getDefault().post(new NeedBindPhoneEvent()); + SingleToastUtil.showToast("第三方登录需绑定手机号喔~"); return Single.error(new Throwable("need bind phone")); } //首次注册需要完善昵称和头像