diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 449929dc6..fb0123460 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,78 +1,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + package="com.yizhuan.erban"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:screenOrientation="portrait" /> - + + android:windowSoftInputMode="stateHidden|adjustResize" /> + - - + + - - - + - - + + - + + android:screenOrientation="portrait" /> + + android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> + + android:screenOrientation="portrait" /> + + android:windowSoftInputMode="adjustPan|stateAlwaysHidden" /> + android:screenOrientation="portrait" /> + android:windowSoftInputMode="adjustPan" /> + android:screenOrientation="portrait" /> @@ -450,7 +294,7 @@ android:launchMode="singleTop" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar" - android:windowSoftInputMode="stateHidden|adjustResize" /> + android:windowSoftInputMode="stateHidden|adjustResize" /> + android:windowSoftInputMode="stateHidden|adjustResize" /> + android:windowSoftInputMode="stateHidden|adjustResize" /> + android:screenOrientation="portrait" /> @@ -707,7 +551,7 @@ android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> @@ -718,11 +562,11 @@ android:name="com.yizhuan.tutu.mentoring_relationship.activity.MentoringRelationshipActivity" android:label="@string/main_androidmanifest_030" android:screenOrientation="portrait" - android:windowSoftInputMode="stateHidden|adjustResize" /> + android:windowSoftInputMode="stateHidden|adjustResize" /> + android:screenOrientation="portrait" /> @@ -745,8 +589,7 @@ - + android:theme="@style/room_message_activity" /> @@ -758,7 +601,7 @@ android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> @@ -781,10 +624,10 @@ android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> @@ -798,7 +641,7 @@ + android:theme="@style/room_message_activity" /> @@ -807,23 +650,24 @@ android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> + - + + android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> @@ -832,7 +676,7 @@ android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> @@ -856,7 +700,7 @@ android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> + android:windowSoftInputMode="stateHidden|adjustResize" /> + android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> + android:windowSoftInputMode="adjustPan" /> @@ -900,22 +744,17 @@ android:theme="@style/dialog_web_view_activity" /> + android:screenOrientation="portrait" /> - - - - + + android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> @@ -964,7 +803,7 @@ android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> @@ -1015,7 +854,7 @@ android:name=".earn.activity.EarnWithdrawActivity" android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection" android:exported="false" - android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/base/BaseActivity.java b/app/src/main/java/com/yizhuan/erban/base/BaseActivity.java index b7304757f..a01c283e4 100644 --- a/app/src/main/java/com/yizhuan/erban/base/BaseActivity.java +++ b/app/src/main/java/com/yizhuan/erban/base/BaseActivity.java @@ -57,6 +57,7 @@ import com.yizhuan.erban.common.widget.dialog.DialogUiHelper; import com.yizhuan.erban.ui.im.avtivity.NimP2PMessageActivity; import com.yizhuan.erban.ui.login.AddUserInfoActivity; import com.yizhuan.erban.ui.login.LoginCodeActivity; +import com.yizhuan.erban.ui.login.LoginPhoneActivity; import com.yizhuan.erban.ui.pay.ChargeActivity; import com.yizhuan.erban.ui.setting.ResetPasswordActivity; import com.yizhuan.erban.ui.webview.CommonWebViewActivity; @@ -971,7 +972,7 @@ public abstract class BaseActivity extends RxAppCompatActivity */ private boolean isNeedToHandleBroadcastMessageActivity() { List acts = new ArrayList<>(); -// acts.add(LoginPhoneActivity.class); + acts.add(LoginPhoneActivity.class); acts.add(LoginCodeActivity.class); acts.add(ResetPasswordActivity.class); acts.add(AddUserInfoActivity.class); diff --git a/app/src/main/java/com/yizhuan/erban/pay/password/GiveGoldPassWordFragment.java b/app/src/main/java/com/yizhuan/erban/pay/password/GiveGoldPassWordFragment.java index 0bb36d91d..0eecb9f55 100644 --- a/app/src/main/java/com/yizhuan/erban/pay/password/GiveGoldPassWordFragment.java +++ b/app/src/main/java/com/yizhuan/erban/pay/password/GiveGoldPassWordFragment.java @@ -18,7 +18,6 @@ import androidx.fragment.app.FragmentManager; import com.jungly.gridpasswordview.GridPasswordView; import com.yizhuan.erban.R; import com.yizhuan.erban.ui.setting.ModifyPwdActivity; -import com.yizhuan.erban.ui.setting.VerifyPhoneActivity; import com.yizhuan.xchat_android_library.utils.ResUtil; diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/AreaCodeActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/login/AreaCodeActivity.kt new file mode 100644 index 000000000..e2ea074a7 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/ui/login/AreaCodeActivity.kt @@ -0,0 +1,80 @@ +package com.yizhuan.erban.ui.login + +import android.app.Activity +import android.content.Intent +import android.view.View +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import com.netease.nim.uikit.StatusBarUtil +import com.yizhuan.erban.R +import com.yizhuan.erban.base.BaseViewBindingActivity +import com.yizhuan.erban.databinding.ActivityAreaCodeBinding +import com.yizhuan.erban.ui.login.bean.CountryBean + +/** + * 区号 + * Created by wushaocheng + * Date: 2022/11/28 + */ +class AreaCodeActivity : BaseViewBindingActivity() { + + private val mCountries = ArrayList() + + companion object { + const val COUNTRY_NUMBER = "country_number" + + @JvmStatic + fun startForResult(context: Activity, requestCode: Int) { + val intent = Intent(context, AreaCodeActivity::class.java) + context.startActivityForResult( + intent, + requestCode + ) + } + } + + override fun init() { + initTitleBar(getString(R.string.select_area_code)) + initCountryData() + initListView() + } + + private fun initCountryData() { + val countryList = resources.getStringArray(R.array.country_code_list_ch) + for (s in countryList) { + val country = s.split("*").toTypedArray() + val countryName = country[0] + val countryNumber = country[1] + val c = CountryBean(countryName, countryNumber) + mCountries.add(c) + } + } + + private fun initListView() { + val mAdapter = object : + BaseQuickAdapter(R.layout.item_country, mCountries) { + override fun convert(helper: BaseViewHolder, item: CountryBean) { + helper.setText(R.id.tv_name, item.name) + helper.setText(R.id.tv_country_code, item.code) + } + } + binding.mRecyclerView.adapter = mAdapter + //返回国家 + mAdapter.setOnItemClickListener { adapter: BaseQuickAdapter<*, *>?, view: View?, position: Int -> + val country = mCountries[position] + val intent = Intent() + intent.putExtra(COUNTRY_NUMBER, country.code) + setResult(RESULT_OK, intent) + finish() + } + } + + override fun needSteepStateBar() = true + + override fun setStatusBar() { + super.setStatusBar() + StatusBarUtil.transparencyBar(this) + StatusBarUtil.StatusBarLightMode(this) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/AuthorizationCodeActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/login/AuthorizationCodeActivity.kt new file mode 100644 index 000000000..c2826002e --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/ui/login/AuthorizationCodeActivity.kt @@ -0,0 +1,70 @@ +package com.yizhuan.erban.ui.login + +import android.text.Editable +import android.text.TextWatcher +import android.view.MotionEvent +import android.view.WindowManager +import android.widget.EditText +import com.netease.nim.uikit.StatusBarUtil +import com.yizhuan.erban.base.BaseViewBindingActivity +import com.yizhuan.erban.databinding.ActivityAuthorizationCodeBinding + +/** + * 授权码页面 + * Created by wushaocheng + * Date: 2022/11/28 + */ +class AuthorizationCodeActivity : BaseViewBindingActivity() { + + override fun init() { + initData() + initListener() + } + + private fun initData() { + this.window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE) + } + + private fun initListener() { + binding.etCode.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + + } + + override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + + } + + override fun afterTextChanged(p0: Editable?) { + binding.btnNext.isEnabled = p0?.isEmpty() != true + } + + }) + binding.btnNext.setOnClickListener { + + } + } + + override fun onTouchEvent(event: MotionEvent): Boolean { + val view = currentFocus + var isPressEdit = false + if (view is EditText) { + if (event.rawX >= view.getX() && event.rawX <= view.getX() + view.getWidth() && event.rawY >= view.getY() && event.rawY <= view.getY() + view.getHeight()) { + isPressEdit = true + } + } + if (!isPressEdit) { + hideIME() + } + return super.onTouchEvent(event) + } + + override fun needSteepStateBar() = true + + override fun setStatusBar() { + super.setStatusBar() + StatusBarUtil.transparencyBar(this) + StatusBarUtil.StatusBarLightMode(this) + } + +} \ No newline at end of file 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 cc5696f35..8c468b98d 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 @@ -81,9 +81,9 @@ public class BindCodeActivity extends BaseActivity { private void onFindViews() { codeEt = findViewById(R.id.et_code); - tvGetCode = findViewById(R.id.tv_get_code); +// tvGetCode = findViewById(R.id.tv_get_code); tvDesc = findViewById(R.id.tv_desc); - tvSecond = findViewById(R.id.tv_second); +// tvSecond = findViewById(R.id.tv_second); } private void onSetListener() { @@ -179,7 +179,7 @@ public class BindCodeActivity extends BaseActivity { private void bindPhone() { getDialogManager().showProgressDialog(BindCodeActivity.this, ResUtil.getString(R.string.ui_login_bindcodeactivity_02)); - AuthModel.get().bindPhone(mPhone, codeEt.getText().toString()) + AuthModel.get().bindPhone(mPhone, codeEt.getText().toString(),"") .compose(bindUntilEvent(ActivityEvent.DESTROY)) .doOnSuccess(s -> { toast(ResUtil.getString(R.string.ui_login_bindcodeactivity_03)); 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 deleted file mode 100644 index d4ba91804..000000000 --- a/app/src/main/java/com/yizhuan/erban/ui/login/BindPhoneActivity.java +++ /dev/null @@ -1,161 +0,0 @@ -package com.yizhuan.erban.ui.login; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.MotionEvent; -import android.view.View; -import android.view.WindowManager; -import android.widget.Button; -import android.widget.EditText; -import android.widget.ImageView; - -import com.netease.nim.uikit.StatusBarUtil; -import com.yizhuan.erban.R; -import com.yizhuan.erban.base.BaseActivity; -import com.yizhuan.erban.ui.login.helper.LogoutHelper; -import com.yizhuan.xchat_android_library.utils.NetworkUtils; -import com.yizhuan.xchat_android_library.utils.TextWatcherWrapper; - -/** - * 由于所有用户都需要强制绑定手机,所以理论上这里只有MainActivity会调用到这个界面 - * 但是为了以防万一,其它调用绑定手机的地方也改为调用这个页面了 - */ -public class BindPhoneActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "BindPhoneActivity"; - - private EditText accountEt; - private Button btnNext; - private ImageView ivBack; - public static final String KEY_BACK_LOGIN = "key_back_login"; - private int REQUEST_CODE = 100; - - private AccountValidator accountValidator = new AccountValidator(); - private TextWatcher textWatcher = new TextWatcherWrapper() { - @Override - public void afterTextChanged(Editable s) { - checkInput(); - } - }; - - - public static void start(Context context) { - Intent intent = new Intent(context, BindPhoneActivity.class); - context.startActivity(intent); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_bind_phone); - onFindViews(); - onSetListener(); - - accountEt.setFocusable(true); - accountEt.setFocusableInTouchMode(true); - accountEt.requestFocus(); - this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); - } - - private void onFindViews() { - accountEt = findViewById(R.id.et_account); - btnNext = findViewById(R.id.btn_next); - ivBack = findViewById(R.id.iv_back); - } - - private void onSetListener() { - btnNext.setOnClickListener(this); - btnNext.setEnabled(false); - accountEt.addTextChangedListener(textWatcher); - ivBack.setOnClickListener(this); - } - - private void checkInput() { - if (!TextUtils.isEmpty(accountEt.getText().toString()) && accountEt.getText().toString().length() >= 7) { - btnNext.setEnabled(true); - } else { - btnNext.setEnabled(false); - } - } - - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.btn_next: - if (!NetworkUtils.isNetworkStrictlyAvailable(this)) { - checkNetToast(); - return; - } - if (!accountValidator.isValid(accountEt.getText().toString())) { - toast(accountValidator.getErrorMessage()); - return; - } - BindCodeActivity.startForResult(BindPhoneActivity.this, accountEt.getText().toString(), REQUEST_CODE); - break; - - case R.id.iv_back: - handleFinish(); - break; - default: - break; - } - } - - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { - finish(); - } - } - - @Override - protected void onDestroy() { - accountEt = null; - super.onDestroy(); - } - - - @Override - public boolean onTouchEvent(MotionEvent event) { - View view = getCurrentFocus(); - boolean isPressEdit = false; - if (view instanceof EditText) { - if (event.getRawX() >= view.getX() && event.getRawX() <= view.getX() + view.getWidth() && event.getRawY() >= view.getY() && event.getRawY() <= view.getY() + view.getHeight()) { - isPressEdit = true; - } - } - if (!isPressEdit) { - hideIME(); - } - return super.onTouchEvent(event); - } - - - @Override - public void onBackPressed() { - handleFinish(); - } - - private void handleFinish() { - LogoutHelper.logout(); - finish(); - } - - @Override - protected boolean needSteepStateBar() { - return true; - } - - @Override - protected void setStatusBar() { - StatusBarUtil.transparencyBar(this); - StatusBarUtil.StatusBarLightMode(this); - } - -} diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/BindPhoneActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/login/BindPhoneActivity.kt new file mode 100644 index 000000000..9718cdf02 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/ui/login/BindPhoneActivity.kt @@ -0,0 +1,218 @@ +package com.yizhuan.erban.ui.login + +import android.content.Context +import android.content.Intent +import android.os.CountDownTimer +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.MotionEvent +import android.view.View +import android.widget.EditText +import androidx.core.content.ContextCompat +import com.coorchice.library.utils.LogUtils +import com.netease.nim.uikit.StatusBarUtil +import com.trello.rxlifecycle3.android.ActivityEvent +import com.yizhuan.erban.R +import com.yizhuan.erban.base.BaseViewBindingActivity +import com.yizhuan.erban.databinding.ActivityBindPhoneBinding +import com.yizhuan.erban.ui.login.BindPhoneActivity +import com.yizhuan.xchat_android_core.auth.AuthModel +import com.yizhuan.xchat_android_core.code.CodeType +import com.yizhuan.xchat_android_core.user.UserModel +import com.yizhuan.xchat_android_core.user.bean.UserInfo +import com.yizhuan.xchat_android_library.utils.NetworkUtils +import com.yizhuan.xchat_android_library.utils.ResUtil +import io.reactivex.SingleObserver +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable + +/** + * 由于所有用户都需要强制绑定手机,所以理论上这里只有MainActivity会调用到这个界面 + * 但是为了以防万一,其它调用绑定手机的地方也改为调用这个页面了 + */ +class BindPhoneActivity : BaseViewBindingActivity(), + View.OnClickListener, TextWatcher { + + private var cdt: CountDownTimer? = null + + companion object { + private const val TAG = "BindPhoneActivity" + const val REQUEST_AREA_CODE = 100 + + @JvmStatic + fun start(context: Context) { + val intent = Intent(context, BindPhoneActivity::class.java) + context.startActivity(intent) + } + } + + override fun init() { + initTitleBar(getString(R.string.text_bind_phone)) + initListener() + } + + private fun initListener() { + binding.tvAreaCode.setOnClickListener(this) + binding.tvGetCode.setOnClickListener(this) + binding.btnNext.setOnClickListener(this) + binding.etAccount.addTextChangedListener(this) + binding.etCode.addTextChangedListener(this) + } + + override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + + } + + override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + + } + + override fun afterTextChanged(p0: Editable?) { + binding.btnNext.isEnabled = !TextUtils.isEmpty(binding.etAccount.text.toString()) && + !TextUtils.isEmpty(binding.etCode.text.toString()) + } + + override fun onClick(v: View) { + when (v.id) { + R.id.tv_area_code -> { + AreaCodeActivity.startForResult(this, REQUEST_AREA_CODE) + } + R.id.tv_get_code -> { + dialogManager.showProgressDialog(this) + AuthModel.get() + .getSmsCode( + binding.tvAreaCode.text.toString().substring(1), + binding.tvAreaCode.text.toString() + .substring(1) + binding.etAccount.text.toString(), + CodeType.BIND_PHONE + ) + .observeOn(AndroidSchedulers.mainThread()) + .compose(bindUntilEvent(ActivityEvent.DESTROY)) + .subscribe(object : SingleObserver { + override fun onSubscribe(d: Disposable) {} + override fun onSuccess(tip: String) { + dialogManager.dismissDialog() + startCounter() + toast(tip) + } + + override fun onError(e: Throwable) { + dialogManager.dismissDialog() + toast(e.message) + LogUtils.e(ResUtil.getString(R.string.ui_login_bindcodeactivity_01)) + } + }) + } + R.id.btn_next -> { + if (!NetworkUtils.isNetworkStrictlyAvailable(this)) { + checkNetToast() + return + } + dialogManager.showProgressDialog( + this, + ResUtil.getString(R.string.ui_login_bindcodeactivity_02) + ) + AuthModel.get().bindPhone( + binding.tvAreaCode.text.toString().substring(1), + binding.tvAreaCode.text.toString() + .substring(1) + binding.etAccount.text.toString(), + binding.etCode.text.toString() + ) + .compose(bindUntilEvent(ActivityEvent.DESTROY)) + .doOnSuccess { s: String? -> + toast(ResUtil.getString(R.string.ui_login_bindcodeactivity_03)) + setResult(RESULT_OK) + } + .doOnError { throwable: Throwable -> + toast( + throwable.message + ) + } + .flatMap { s: String? -> + UserModel.get().updateCurrentUserInfo() + } + .doOnSuccess { s: UserInfo? -> + setResult(RESULT_OK) + finish() + } + .doFinally { dialogManager.dismissDialog() } + .subscribe() + } + } + } + + private fun startCounter() { + stopCounter() + //开始倒计时 60s 间隔1s + binding.tvGetCode.isEnabled = false + binding.tvGetCode.setTextColor(ContextCompat.getColor(this, R.color.color_9168FA)) + cdt = object : CountDownTimer(60 * 1000, 100) { + override fun onTick(text: Long) { + showTextDown(text) + } + + override fun onFinish() { + resetBtn() + } + } + cdt?.start() + } + + private fun showTextDown(text: Long) { + val time = (text / 1000).toString() + "s" + binding.tvGetCode.text = time + } + + private fun stopCounter() { + cdt?.cancel() + cdt = null + } + + + private fun resetBtn() { + stopCounter() + binding.tvGetCode.setTextColor(ContextCompat.getColor(this, R.color.text_title_color)) + binding.tvGetCode.isEnabled = true + binding.tvGetCode.text = getString(R.string.text_request_code) + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (requestCode == REQUEST_AREA_CODE && resultCode == RESULT_OK) { + val areaCode = data?.getStringExtra(AreaCodeActivity.COUNTRY_NUMBER) + if (areaCode != null) { + binding.tvAreaCode.text = areaCode + } + } + } + + override fun onTouchEvent(event: MotionEvent): Boolean { + val view = currentFocus + var isPressEdit = false + if (view is EditText) { + if (event.rawX >= view.getX() && event.rawX <= view.getX() + view.getWidth() && event.rawY >= view.getY() && event.rawY <= view.getY() + view.getHeight()) { + isPressEdit = true + } + } + if (!isPressEdit) { + hideIME() + } + return super.onTouchEvent(event) + } + + override fun needSteepStateBar(): Boolean { + return true + } + + override fun setStatusBar() { + StatusBarUtil.transparencyBar(this) + StatusBarUtil.StatusBarLightMode(this) + } + + override fun onDestroy() { + super.onDestroy() + stopCounter() + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/LoginActivity.java b/app/src/main/java/com/yizhuan/erban/ui/login/LoginActivity.java index a0718905a..3c92c345f 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/login/LoginActivity.java +++ b/app/src/main/java/com/yizhuan/erban/ui/login/LoginActivity.java @@ -219,7 +219,7 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener break; case R.id.tv_phone: - + LoginPhoneActivity.start(this); break; case R.id.tv_others: LoginPasswordActivity.start(LoginActivity.this); diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/LoginCodeActivity.java b/app/src/main/java/com/yizhuan/erban/ui/login/LoginCodeActivity.java deleted file mode 100644 index 2a9363cfb..000000000 --- a/app/src/main/java/com/yizhuan/erban/ui/login/LoginCodeActivity.java +++ /dev/null @@ -1,230 +0,0 @@ -package com.yizhuan.erban.ui.login; - -import android.annotation.SuppressLint; -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.text.TextUtils; -import android.view.MotionEvent; -import android.view.View; -import android.view.WindowManager; -import android.widget.EditText; -import android.widget.TextView; - -import com.coorchice.library.utils.LogUtils; -import com.netease.nim.uikit.StatusBarUtil; -import com.trello.rxlifecycle3.android.ActivityEvent; -import com.yizhuan.erban.R; -import com.yizhuan.erban.base.BaseActivity; -import com.yizhuan.erban.ui.login.helper.LogoutHelper; -import com.yizhuan.erban.ui.login.ui.CodeEditText; -import com.yizhuan.xchat_android_core.auth.AuthModel; -import com.yizhuan.xchat_android_core.auth.event.LoginEvent; -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_library.utils.ResUtil; - -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; - -import io.reactivex.SingleObserver; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; - -/** - * @author zhouxiangfeng - * @date 17/2/26 - */ -public class LoginCodeActivity extends BaseActivity { - - private CodeEditText codeEt; - private TextView tvGetCode, tvDesc, tvSecond; - private String mPhone; - private boolean isSuperAdmin = false; - private CodeDownDescTimer timer; - - public static void start(Context context, String phone) { - Intent intent = new Intent(context, LoginCodeActivity.class); - intent.putExtra("phone", phone); - context.startActivity(intent); - } - - public static void startForResult(Activity context, int requestCode) { - Intent intent = new Intent(context, LoginCodeActivity.class); - context.startActivityForResult(intent, requestCode); // startActivityForResult会导致singletop,singletask失效 - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_login_code); - EventBus.getDefault().register(this); - onFindViews(); - initData(); - onSetListener(); - getSmsCode(); - } - - @SuppressLint("SetTextI18n") - private void initData() { - mPhone = getIntent().getStringExtra("phone"); - - codeEt.setFocusable(true); - codeEt.setFocusableInTouchMode(true); - codeEt.requestFocus(); - this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); - - } - - @Override - protected boolean needSteepStateBar() { - return true; - } - - @Override - protected void setStatusBar() { - StatusBarUtil.transparencyBar(this); - StatusBarUtil.StatusBarLightMode(this); - } - - private void onFindViews() { - codeEt = findViewById(R.id.et_code); - tvGetCode = findViewById(R.id.tv_get_code); - tvDesc = findViewById(R.id.tv_desc); - tvSecond = findViewById(R.id.tv_second); - } - - private void onSetListener() { - - codeEt.setOnTextFinishListener((text, length) -> login()); - - tvGetCode.setOnClickListener(v -> getSmsCode()); - - findViewById(R.id.iv_back).setOnClickListener(v -> finish()); - } - - @Override - protected void onDestroy() { - codeEt = null; - super.onDestroy(); - stopCountDownTimer(); - EventBus.getDefault().unregister(this); - } - - - @Override - public boolean onTouchEvent(MotionEvent event) { - View view = getCurrentFocus(); - boolean isPressEdit = false; - if (view instanceof EditText) { - if (event.getRawX() >= view.getX() && event.getRawX() <= view.getX() + view.getWidth() && event.getRawY() >= view.getY() && event.getRawY() <= view.getY() + view.getHeight()) { - isPressEdit = true; - } - } - if (!isPressEdit) { - hideIME(); - } - return super.onTouchEvent(event); - - } - - - /** - * 获取验证码 - */ - @SuppressLint("CheckResult") - private void getSmsCode() { - if (TextUtils.isEmpty(mPhone) || mPhone.length() != 11) { - return; - } - AuthModel.get() - .sendLoginCode(mPhone, CodeType.REGISTER) - .observeOn(AndroidSchedulers.mainThread()) - .compose(bindUntilEvent(ActivityEvent.DESTROY)) - .subscribe(new SingleObserver() { - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onSuccess(String s) { - tvDesc.setText(getString(R.string.str_send_code_success) + mPhone); - startCountDownTimer(); - toast(s); - } - - @Override - public void onError(Throwable e) { - toast(e.getMessage()); -// finish(); - LogUtils.e(ResUtil.getString(R.string.ui_login_logincodeactivity_01)); - } - }); - } - - private void login() { - String smsCode = codeEt.getText().toString(); - getDialogManager().showProgressDialog(this, ResUtil.getString(R.string.ui_login_logincodeactivity_02)); - AuthModel.get().login( - mPhone, - "", - smsCode, - "", - "") - .subscribe(new SingleObserver() { - @Override - public void onSubscribe(Disposable d) { - mCompositeDisposable.add(d); - } - - @Override - public void onSuccess(String s) { - getDialogManager().dismissDialog(); - stopCountDownTimer(); - setResult(RESULT_OK); - finish(); - } - - @Override - public void onError(Throwable e) { - getDialogManager().dismissDialog(); - dealWithLoginError(e); - } - }); - - StatisticManager.Instance().onEvent(this, - StatisticsProtocol.EVENT_LOGIN_PHONE_CLICK, ResUtil.getString(R.string.ui_login_logincodeactivity_03), null); - } - - public void dealWithLoginError(Throwable e) { - LogoutHelper.dealWithLoginError(this, e); - } - - private void startCountDownTimer() { - stopCountDownTimer(); - timer = new CodeDownDescTimer(tvSecond, tvGetCode, 60000, 1000); - timer.start(); - } - - private void stopCountDownTimer() { - if (timer != null) { - timer.cancel(); - timer = null; - } - } - - /** - * 注册成功后发送过来的事件 - */ - @Subscribe(threadMode = ThreadMode.MAIN) - public void onLoginEvent(LoginEvent event) { - getDialogManager().dismissDialog(); - setResult(RESULT_OK); - finish(); - } - -} diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/LoginCodeActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/login/LoginCodeActivity.kt new file mode 100644 index 000000000..095809eb0 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/ui/login/LoginCodeActivity.kt @@ -0,0 +1,195 @@ +package com.yizhuan.erban.ui.login + +import android.annotation.SuppressLint +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.text.Editable +import android.text.TextWatcher +import android.view.MotionEvent +import android.view.WindowManager +import android.widget.EditText +import com.coorchice.library.utils.LogUtils +import com.netease.nim.uikit.StatusBarUtil +import com.trello.rxlifecycle3.android.ActivityEvent +import com.yizhuan.erban.R +import com.yizhuan.erban.base.BaseViewBindingActivity +import com.yizhuan.erban.databinding.ActivityLoginCodeBinding +import com.yizhuan.erban.ui.login.helper.LogoutHelper +import com.yizhuan.xchat_android_core.auth.AuthModel +import com.yizhuan.xchat_android_core.auth.event.LoginEvent +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_library.utils.ResUtil +import io.reactivex.SingleObserver +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable +import org.greenrobot.eventbus.EventBus +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode + +/** + * 验证码页面 + * Created by wushaocheng + * Date: 2022/11/28 + */ +class LoginCodeActivity : BaseViewBindingActivity() { + private var mPhone: String? = null + + companion object { + fun start(context: Context, phone: String?) { + val intent = Intent(context, LoginCodeActivity::class.java) + intent.putExtra("phone", phone) + context.startActivity(intent) + } + + fun startForResult(context: Activity, requestCode: Int) { + val intent = Intent(context, LoginCodeActivity::class.java) + context.startActivityForResult( + intent, + requestCode + ) // startActivityForResult会导致singletop,singletask失效 + } + } + + override fun init() { + EventBus.getDefault().register(this) + initData() + initListener() + getSmsCode() + } + + @SuppressLint("SetTextI18n") + private fun initData() { + mPhone = intent.getStringExtra("phone") + this.window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE) + } + + private fun initListener() { + binding.etCode.addTextChangedListener(object : TextWatcher{ + override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + + } + + override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + + } + + override fun afterTextChanged(p0: Editable?) { + binding.btnNext.isEnabled = p0?.isEmpty() != true + } + + }) + binding.tvRegain.setOnClickListener { getSmsCode() } + binding.btnNext.setOnClickListener { + + } + } + + override fun onTouchEvent(event: MotionEvent): Boolean { + val view = currentFocus + var isPressEdit = false + if (view is EditText) { + if (event.rawX >= view.getX() && event.rawX <= view.getX() + view.getWidth() && event.rawY >= view.getY() && event.rawY <= view.getY() + view.getHeight()) { + isPressEdit = true + } + } + if (!isPressEdit) { + hideIME() + } + return super.onTouchEvent(event) + } + + /** + * 获取验证码 + */ + private fun getSmsCode(){ + AuthModel.get() + .sendLoginCode(mPhone, CodeType.REGISTER) + .observeOn(AndroidSchedulers.mainThread()) + .compose(bindUntilEvent(ActivityEvent.DESTROY)) + .subscribe(object : SingleObserver { + override fun onSubscribe(d: Disposable) {} + + override fun onSuccess(tip: String) { +// startCountDownTimer() + toast(tip) + } + + override fun onError(e: Throwable) { + toast(e.message) + //finish(); + LogUtils.e(ResUtil.getString(R.string.ui_login_logincodeactivity_01)) + } + + }) + } + + private fun login() { + val smsCode = binding.etCode.text.toString() + dialogManager.showProgressDialog( + this, + ResUtil.getString(R.string.ui_login_logincodeactivity_02) + ) + AuthModel.get().login( + mPhone, + "", + smsCode, + "", + "" + ) + .subscribe(object : SingleObserver { + override fun onSubscribe(d: Disposable) { + mCompositeDisposable.add(d) + } + + override fun onSuccess(t: String) { + dialogManager.dismissDialog() +// stopCountDownTimer() + setResult(RESULT_OK) + finish() + } + + override fun onError(e: Throwable) { + dialogManager.dismissDialog() + dealWithLoginError(e) + } + }) + StatisticManager.Instance().onEvent( + this, + StatisticsProtocol.EVENT_LOGIN_PHONE_CLICK, + ResUtil.getString(R.string.ui_login_logincodeactivity_03), + null + ) + } + + fun dealWithLoginError(e: Throwable?) { + LogoutHelper.dealWithLoginError(this, e) + } + + /** + * 注册成功后发送过来的事件 + */ + @Subscribe(threadMode = ThreadMode.MAIN) + fun onLoginEvent(event: LoginEvent?) { + dialogManager.dismissDialog() + setResult(RESULT_OK) + finish() + } + + override fun needSteepStateBar(): Boolean { + return true + } + + override fun setStatusBar() { + StatusBarUtil.transparencyBar(this) + StatusBarUtil.StatusBarLightMode(this) + } + + override fun onDestroy() { + super.onDestroy() + EventBus.getDefault().unregister(this) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/LoginPasswordActivity.java b/app/src/main/java/com/yizhuan/erban/ui/login/LoginPasswordActivity.java index 6258c173f..330d25162 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/login/LoginPasswordActivity.java +++ b/app/src/main/java/com/yizhuan/erban/ui/login/LoginPasswordActivity.java @@ -15,6 +15,7 @@ import com.yizhuan.erban.R; import com.yizhuan.erban.application.ReportManager; import com.yizhuan.erban.base.BaseActivity; import com.yizhuan.erban.ui.login.helper.LogoutHelper; +import com.yizhuan.erban.ui.setting.ResetPasswordActivity; import com.yizhuan.xchat_android_core.auth.AuthModel; import com.yizhuan.xchat_android_core.auth.event.LoginEvent; import com.yizhuan.xchat_android_library.utils.TextWatcherWrapper; @@ -69,9 +70,10 @@ public class LoginPasswordActivity extends BaseActivity { edtPassword.addTextChangedListener(textWatcher); btnNext.setOnClickListener(v -> login()); findViewById(R.id.tv_forget_password).setOnClickListener(v -> - getDialogManager().showOkCancelWithTitleDialog(getString(R.string.login_contact_service), "LINE:pekoyuyin", getString(R.string.button_ok), "", true, () -> { - - }) + ResetPasswordActivity.start(context, ResetPasswordActivity.FROM_NOT_LOGIN) +// getDialogManager().showOkCancelWithTitleDialog(getString(R.string.login_contact_service), "LINE:pekoyuyin", getString(R.string.button_ok), "", true, () -> { +// +// }) ); } diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/LoginPhoneActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/login/LoginPhoneActivity.kt new file mode 100644 index 000000000..ac472e31f --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/ui/login/LoginPhoneActivity.kt @@ -0,0 +1,91 @@ +package com.yizhuan.erban.ui.login + +import android.content.Context +import android.content.Intent +import android.text.Editable +import android.text.TextWatcher +import android.view.MotionEvent +import android.view.View +import android.view.WindowManager +import android.widget.EditText +import com.netease.nim.uikit.StatusBarUtil +import com.yizhuan.erban.R +import com.yizhuan.erban.base.BaseViewBindingActivity +import com.yizhuan.erban.databinding.ActivityLoginPhoneBinding + +/** + * 手机号登录页面 + * Created by wushaocheng + * Date: 2022/11/28 + */ +class LoginPhoneActivity : BaseViewBindingActivity(), + View.OnClickListener { + + companion object { + + @JvmStatic + fun start(context: Context) { + val starter = Intent(context, LoginPhoneActivity::class.java) + context.startActivity(starter) + } + } + + override fun init() { + this.window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE) + initListener() + } + + private fun initListener() { + binding.tvCode.setOnClickListener(this) + binding.btnNext.setOnClickListener(this) + binding.etPhone.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + + } + + override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + + } + + override fun afterTextChanged(p0: Editable?) { + binding.btnNext.isEnabled = p0?.isEmpty() != true + } + + }) + } + + override fun onClick(view: View?) { + when (view?.id) { + R.id.tvCode -> { + + } + R.id.btnNext -> { + hideIME() + LoginCodeActivity.start(this, binding.etPhone.text.toString()) + } + } + } + + override fun onTouchEvent(event: MotionEvent): Boolean { + val view = currentFocus + var isPressEdit = false + if (view is EditText) { + if (event.rawX >= view.getX() && event.rawX <= view.getX() + view.getWidth() && event.rawY >= view.getY() && event.rawY <= view.getY() + view.getHeight()) { + isPressEdit = true + } + } + if (!isPressEdit) { + hideIME() + } + return super.onTouchEvent(event) + } + + override fun needSteepStateBar() = true + + override fun setStatusBar() { + super.setStatusBar() + StatusBarUtil.transparencyBar(this) + StatusBarUtil.StatusBarLightMode(this) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/ShowBindPhoneActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/login/ShowBindPhoneActivity.kt index 0479d8ef5..f5855599b 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/login/ShowBindPhoneActivity.kt +++ b/app/src/main/java/com/yizhuan/erban/ui/login/ShowBindPhoneActivity.kt @@ -1,52 +1,58 @@ -package com.yizhuan.erban.ui.login; +package com.yizhuan.erban.ui.login -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.text.TextUtils; -import android.widget.TextView; +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import com.yizhuan.erban.R +import com.yizhuan.xchat_android_library.utils.ResUtil +import android.widget.TextView +import com.yizhuan.xchat_android_core.user.UserModel +import com.yizhuan.erban.ui.setting.VerifyPhoneActivity +import com.netease.nim.uikit.StatusBarUtil +import android.content.Intent +import android.text.TextUtils +import android.view.View +import com.yizhuan.erban.base.BaseActivity +import com.yizhuan.erban.base.BaseViewBindingActivity +import com.yizhuan.erban.databinding.ActivityShowBindPhoneBinding +import com.yizhuan.erban.ui.login.ShowBindPhoneActivity -import com.netease.nim.uikit.StatusBarUtil; -import com.yizhuan.erban.R; -import com.yizhuan.erban.base.BaseActivity; -import com.yizhuan.erban.ui.setting.VerifyPhoneActivity; -import com.yizhuan.xchat_android_core.user.UserModel; -import com.yizhuan.xchat_android_core.user.bean.UserInfo; -import com.yizhuan.xchat_android_library.utils.ResUtil; +/** + * 已綁定手機號頁面 + * Created by wushaocheng + * Date: 2022/11/28 + */ +class ShowBindPhoneActivity : BaseViewBindingActivity() { -public class ShowBindPhoneActivity extends BaseActivity { - - public static void start(Context context) { - Intent intent = new Intent(context, ShowBindPhoneActivity.class); - context.startActivity(intent); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_show_bind_phone); - initWhiteTitleBar(ResUtil.getString(R.string.ui_login_showbindphoneactivity_01)); - TextView tv_phone = findViewById(R.id.tv_phone); - UserInfo userInfo = UserModel.get().getCacheLoginUserInfo(); - if (userInfo != null && !TextUtils.isEmpty(userInfo.getPhone())) { - tv_phone.setText(userInfo.getPhone()); + companion object { + @JvmStatic + fun start(context: Context) { + val intent = Intent(context, ShowBindPhoneActivity::class.java) + context.startActivity(intent) } - findViewById(R.id.tv_change_phone).setOnClickListener(v -> { - VerifyPhoneActivity.start(ShowBindPhoneActivity.this, false); - finish(); - } - ); } - @Override - protected boolean needSteepStateBar() { - return true; + @SuppressLint("SetTextI18n") + override fun init() { + initWhiteTitleBar(getString(R.string.text_bind_phone)) + val userInfo = UserModel.get().cacheLoginUserInfo + if (userInfo != null && !TextUtils.isEmpty(userInfo.phone)) { + binding.tvPhone.text = "+${userInfo.phoneAreaCode} ${userInfo.phone}" + } + binding.tvChangePhone.setOnClickListener { v: View? -> + VerifyPhoneActivity.start(this@ShowBindPhoneActivity, false) + finish() + } } - @Override - protected void setStatusBar() { - super.setStatusBar(); - StatusBarUtil.transparencyBar(this); - StatusBarUtil.StatusBarLightMode(this); + override fun needSteepStateBar(): Boolean { + return true } -} + + override fun setStatusBar() { + super.setStatusBar() + StatusBarUtil.transparencyBar(this) + StatusBarUtil.StatusBarLightMode(this) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/bean/CountryBean.java b/app/src/main/java/com/yizhuan/erban/ui/login/bean/CountryBean.java new file mode 100644 index 000000000..3cf9b8d6a --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/ui/login/bean/CountryBean.java @@ -0,0 +1,15 @@ +package com.yizhuan.erban.ui.login.bean; + +import lombok.Data; + +@Data +public class CountryBean { + public String name; + public String code; + + public CountryBean(String name, String code) { + this.name = name; + this.code = code; + } + +} diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/ModifyPwdActivity.java b/app/src/main/java/com/yizhuan/erban/ui/setting/ModifyPwdActivity.java index 029ed8e84..202eae5f2 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/setting/ModifyPwdActivity.java +++ b/app/src/main/java/com/yizhuan/erban/ui/setting/ModifyPwdActivity.java @@ -179,9 +179,14 @@ public class ModifyPwdActivity extends BaseBindingActivity { - - }); + if (type == PAY_PWD) { + VerifyPhoneActivity.startForResult(this, true); + } else { + ResetPasswordActivity.start(context, ResetPasswordActivity.FROM_LOGIN); + } +// getDialogManager().showOkCancelWithTitleDialog(getString(R.string.login_contact_service), "LINE:pekoyuyin", getString(R.string.button_ok), "", true, () -> { +// +// }); break; } } diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/ResetPasswordActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/ResetPasswordActivity.kt index c11a0bfc1..8fdd1629d 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/setting/ResetPasswordActivity.kt +++ b/app/src/main/java/com/yizhuan/erban/ui/setting/ResetPasswordActivity.kt @@ -1,189 +1,213 @@ -package com.yizhuan.erban.ui.setting; +package com.yizhuan.erban.ui.setting -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; +import android.annotation.SuppressLint +import android.content.Context +import android.content.Intent +import android.os.CountDownTimer +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.View +import androidx.core.content.ContextCompat +import com.coorchice.library.utils.LogUtils +import com.netease.nim.uikit.StatusBarUtil +import com.trello.rxlifecycle3.android.ActivityEvent +import com.yizhuan.erban.R +import com.yizhuan.erban.base.BaseViewBindingActivity +import com.yizhuan.erban.databinding.ActivityResetLoginPwdBinding +import com.yizhuan.erban.ui.login.AreaCodeActivity +import com.yizhuan.erban.ui.login.BindPhoneActivity +import com.yizhuan.erban.ui.login.CodeDownTimer +import com.yizhuan.erban.ui.login.helper.LogoutHelper +import com.yizhuan.erban.ui.setting.ResetPasswordActivity +import com.yizhuan.xchat_android_core.auth.AuthModel +import com.yizhuan.xchat_android_core.code.CodeType +import com.yizhuan.xchat_android_core.user.UserModel +import com.yizhuan.xchat_android_library.utils.ResUtil +import com.yizhuan.xchat_android_library.utils.TextWatcherWrapper +import io.reactivex.SingleObserver +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable -import com.coorchice.library.utils.LogUtils; -import com.netease.nim.uikit.StatusBarUtil; -import com.trello.rxlifecycle3.android.ActivityEvent; -import com.yizhuan.erban.R; -import com.yizhuan.erban.base.BaseBindingActivity; -import com.yizhuan.erban.databinding.ActivityResetLoginPwdBinding; -import com.yizhuan.erban.ui.login.CodeDownTimer; -import com.yizhuan.erban.ui.login.helper.LogoutHelper; -import com.yizhuan.xchat_android_core.auth.AuthModel; -import com.yizhuan.xchat_android_core.code.CodeType; -import com.yizhuan.xchat_android_core.user.UserModel; -import com.yizhuan.xchat_android_library.annatation.ActLayoutRes; -import com.yizhuan.xchat_android_library.utils.ResUtil; -import com.yizhuan.xchat_android_library.utils.TextWatcherWrapper; - -import io.reactivex.SingleObserver; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; - -@ActLayoutRes(R.layout.activity_reset_login_pwd) -public class ResetPasswordActivity extends BaseBindingActivity { - public static final int FROM_NOT_LOGIN = 1; - public static final int FROM_LOGIN = 2; - - - private int from; - - private CodeDownTimer timer; - - private final TextWatcher textWatcher = new TextWatcherWrapper() { - @Override - public void afterTextChanged(Editable s) { - checkInput(); +class ResetPasswordActivity : BaseViewBindingActivity(), + View.OnClickListener { + private var from = 0 + private var cdt: CountDownTimer? = null + private val textWatcher: TextWatcher = object : TextWatcherWrapper() { + override fun afterTextChanged(s: Editable) { + checkInput() } - }; - - public static void start(Context context, int type) { - Intent intent = new Intent(context, ResetPasswordActivity.class); - intent.putExtra("from", type); - context.startActivity(intent); } - @Override - protected void init() { - from = getIntent().getIntExtra("from", FROM_LOGIN); - mBinding.setClick(this); - initWhiteTitleBar(ResUtil.getString(R.string.ui_setting_resetpasswordactivity_01)); + companion object { + const val FROM_NOT_LOGIN = 1 + const val FROM_LOGIN = 2 - if (from == FROM_LOGIN) { - if (UserModel.get().getCacheLoginUserInfo() != null) { - mBinding.etPhone.setText(UserModel.get().getCacheLoginUserInfo().getPhone()); + @JvmStatic + fun start(context: Context, type: Int) { + val intent = Intent(context, ResetPasswordActivity::class.java) + intent.putExtra("from", type) + context.startActivity(intent) + } + } + + override fun init() { + from = intent.getIntExtra("from", FROM_LOGIN) + initWhiteTitleBar(ResUtil.getString(R.string.ui_setting_resetpasswordactivity_01)) +// if (from == FROM_LOGIN) { +// if (UserModel.get().cacheLoginUserInfo != null) { +// binding.etAccount.setText(UserModel.get().cacheLoginUserInfo!!.phone) +// } +// binding.etAccount.isEnabled = false +// } + initListener() + } + + private fun initListener() { + binding.tvAreaCode.setOnClickListener(this) + binding.tvGetCode.setOnClickListener(this) + binding.btnCommit.setOnClickListener(this) + + binding.etAccount.addTextChangedListener(textWatcher) + binding.etPassword.editText.addTextChangedListener(textWatcher) + binding.etCode.addTextChangedListener(textWatcher) + } + + private fun checkInput() { + val enabled = + !TextUtils.isEmpty(binding.etAccount.text) && binding.etAccount.text.toString() + .trim { it <= ' ' }.length >= 7 && !TextUtils.isEmpty(binding.etPassword.text) && binding.etPassword.text.trim { it <= ' ' }.length >= 6 && !TextUtils.isEmpty( + binding.etCode.text + ) && binding.etCode.text.toString().trim { it <= ' ' }.length >= 5 + binding.btnCommit.isEnabled = enabled + } + + override fun onClick(v: View) { + when (v.id) { + R.id.tv_area_code -> { + AreaCodeActivity.startForResult(this, BindPhoneActivity.REQUEST_AREA_CODE) } - mBinding.etPhone.setEnabled(false); - } - mBinding.etPhone.addTextChangedListener(textWatcher); - mBinding.edPassword.getEditText().addTextChangedListener(textWatcher); - mBinding.etCode.addTextChangedListener(textWatcher); - } - - private void checkInput() { - boolean enabled = !TextUtils.isEmpty(mBinding.etPhone.getText()) && mBinding.etPhone.getText().toString().trim().length() >= 7 - && !TextUtils.isEmpty(mBinding.edPassword.getText()) && mBinding.edPassword.getText().trim().length() >= 6 - && !TextUtils.isEmpty(mBinding.etCode.getText()) && mBinding.etCode.getText().toString().trim().length() >= 5; - mBinding.btnCommit.setEnabled(enabled); - } - - - @Override - public void onClick(View v) { - super.onClick(v); - switch (v.getId()) { - case R.id.btn_commit: - commit(); - break; - case R.id.btn_get_code: - if (TextUtils.isEmpty(mBinding.etPhone.getText())) { - toast(ResUtil.getString(R.string.ui_setting_resetpasswordactivity_02)); - return; - } - mBinding.btnGetCode.setClickable(false); + R.id.tv_get_code -> { + dialogManager.showProgressDialog(this) AuthModel.get() - .sendLoginCode(mBinding.etPhone.getText().toString().trim(), from == FROM_LOGIN ? - CodeType.RESET_PSW_LOGIN : CodeType.RESET_PSW_NOT_LOGIN) - .observeOn(AndroidSchedulers.mainThread()) - .compose(bindUntilEvent(ActivityEvent.DESTROY)) - .subscribe(new SingleObserver() { - @Override - public void onSubscribe(Disposable d) { + .getSmsCode( + binding.tvAreaCode.text.toString().substring(1), + binding.tvAreaCode.text.toString() + .substring(1) + binding.etAccount.text.toString(), + if (from == FROM_LOGIN) CodeType.RESET_PSW_LOGIN else CodeType.RESET_PSW_NOT_LOGIN + ) + .observeOn(AndroidSchedulers.mainThread()) + .compose(bindUntilEvent(ActivityEvent.DESTROY)) + .subscribe(object : SingleObserver { + override fun onSubscribe(d: Disposable) {} + override fun onSuccess(t: String) { + dialogManager.dismissDialog() + startCounter() + } - } + override fun onError(e: Throwable) { + dialogManager.dismissDialog() + toast(e.message) + LogUtils.e(ResUtil.getString(R.string.ui_setting_resetpasswordactivity_03)) + } - @Override - public void onSuccess(String s) { - startCountDownTimer(); - } - - @Override - public void onError(Throwable e) { - mBinding.btnGetCode.setClickable(true); - LogUtils.e(ResUtil.getString(R.string.ui_setting_resetpasswordactivity_03)); - } - }); - break; + }) + } + R.id.btn_commit -> commit() } } - private void startCountDownTimer() { - stopCountDownTimer(); - timer = new CodeDownTimer(mBinding.btnGetCode, 60000, 1000); - timer.start(); + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (requestCode == BindPhoneActivity.REQUEST_AREA_CODE && resultCode == RESULT_OK) { + val areaCode = data?.getStringExtra(AreaCodeActivity.COUNTRY_NUMBER) + if (areaCode != null) { + binding.tvAreaCode.text = areaCode + } + } } - private void stopCountDownTimer() { - if (timer != null) { - timer.cancel(); - timer = null; + private fun startCounter() { + stopCounter() + //开始倒计时 60s 间隔1s + binding.tvGetCode.isEnabled = false + binding.tvGetCode.setTextColor(ContextCompat.getColor(this, R.color.color_9168FA)) + cdt = object : CountDownTimer(60 * 1000, 100) { + override fun onTick(text: Long) { + showTextDown(text) + } + + override fun onFinish() { + resetBtn() + } } + cdt?.start() + } + + private fun showTextDown(text: Long) { + val time = (text / 1000).toString() + "s" + binding.tvGetCode.text = time + } + + private fun stopCounter() { + cdt?.cancel() + cdt = null + } + + private fun resetBtn() { + stopCounter() + binding.tvGetCode.setTextColor(ContextCompat.getColor(this, R.color.text_title_color)) + binding.tvGetCode.isEnabled = true + binding.tvGetCode.text = getString(R.string.text_request_code) } @SuppressLint("CheckResult") - private void commit() { - if (TextUtils.isEmpty(mBinding.etPhone.getText())) { - toast(ResUtil.getString(R.string.ui_setting_resetpasswordactivity_04)); - return; - } - if (TextUtils.isEmpty(mBinding.edPassword.getText())) { - toast(ResUtil.getString(R.string.ui_setting_resetpasswordactivity_05)); - return; - } - if (TextUtils.isEmpty(mBinding.etCode.getText())) { - toast(ResUtil.getString(R.string.ui_setting_resetpasswordactivity_06)); - return; - } - - getDialogManager().showProgressDialog(ResetPasswordActivity.this, ResUtil.getString(R.string.ui_setting_resetpasswordactivity_07)); + private fun commit() { + dialogManager.showProgressDialog( + this@ResetPasswordActivity, + ResUtil.getString(R.string.ui_setting_resetpasswordactivity_07) + ) AuthModel.get().requestResetPsw( - mBinding.etPhone.getText().toString().trim(), - mBinding.etCode.getText().toString().trim(), - mBinding.edPassword.getText().trim()) - .compose(bindToLifecycle()) - .subscribe(new SingleObserver() { - @Override - public void onSubscribe(Disposable d) { + binding.tvAreaCode.text.toString().substring(1) + binding.etAccount.text.toString() + .trim { it <= ' ' }, + binding.etCode.text.toString().trim { it <= ' ' }, + binding.etPassword.text.trim { it <= ' ' }) + .compose(bindToLifecycle()) + .subscribe(object : SingleObserver { + override fun onSubscribe(d: Disposable) {} + override fun onSuccess(t: String) { + dialogManager.dismissDialog() + UserModel.get().updateCurrentUserInfo().subscribe() + toast(ResUtil.getString(R.string.ui_setting_resetpasswordactivity_08)) + if (from == FROM_LOGIN) { + LogoutHelper.logout() } + finish() + } - @Override - public void onSuccess(String s) { - getDialogManager().dismissDialog(); - UserModel.get().updateCurrentUserInfo().subscribe(); - toast(ResUtil.getString(R.string.ui_setting_resetpasswordactivity_08)); - if (from == FROM_LOGIN) { - LogoutHelper.logout(); - } - finish(); - } - - @Override - public void onError(Throwable e) { - getDialogManager().dismissDialog(); - toast(e.getMessage()); - } - }); + override fun onError(e: Throwable) { + dialogManager.dismissDialog() + toast(e.message) + } + }) } - @Override - protected boolean needSteepStateBar() { - return true; + override fun needSteepStateBar(): Boolean { + return true } - @Override - protected void setStatusBar() { - super.setStatusBar(); - StatusBarUtil.transparencyBar(this); - StatusBarUtil.StatusBarLightMode(this); - StatusBarUtil.StatusBarLightMode(this); + override fun setStatusBar() { + super.setStatusBar() + StatusBarUtil.transparencyBar(this) + StatusBarUtil.StatusBarLightMode(this) } -} + + override fun onDestroy() { + super.onDestroy() + dialogManager.dismissDialog() + stopCounter() + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.java b/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.java index 6a95d9b9c..94ea521a0 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.java +++ b/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.java @@ -17,6 +17,8 @@ import com.yizhuan.erban.base.BaseActivity; import com.yizhuan.erban.common.widget.dialog.DialogManager; import com.yizhuan.erban.databinding.ActivitySettingBinding; import com.yizhuan.erban.ui.im.avtivity.BlackListManageActivity; +import com.yizhuan.erban.ui.login.BindPhoneActivity; +import com.yizhuan.erban.ui.login.ShowBindPhoneActivity; import com.yizhuan.erban.ui.login.helper.LogoutHelper; import com.yizhuan.erban.ui.user.AboutActivity; import com.yizhuan.erban.ui.webview.CommonWebViewActivity; @@ -36,6 +38,8 @@ import org.greenrobot.eventbus.ThreadMode; import java.io.File; +import lombok.val; + /** * Created by zhouxiangfeng on 2017/4/16. */ @@ -79,6 +83,14 @@ public class SettingActivity extends BaseActivity implements View.OnClickListene @Override public void onClick(View view) { switch (view.getId()) { + case R.id.rly_bind_phone: + UserInfo userInfo = UserModel.get().getCacheLoginUserInfo(); + if(userInfo != null && userInfo.isBindPhone()){ + ShowBindPhoneActivity.start(context); + }else { + BindPhoneActivity.start(this); + } + break; case R.id.rly_contact_us: UIHelper.openContactUs(this); break; diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/VerifyPhoneActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/VerifyPhoneActivity.kt index dbff4194c..b50c471ce 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/setting/VerifyPhoneActivity.kt +++ b/app/src/main/java/com/yizhuan/erban/ui/setting/VerifyPhoneActivity.kt @@ -1,273 +1,262 @@ -package com.yizhuan.erban.ui.setting; +package com.yizhuan.erban.ui.setting -import android.annotation.SuppressLint; -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; +import android.annotation.SuppressLint +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.os.CountDownTimer +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.View +import androidx.core.content.ContextCompat +import com.netease.nim.uikit.StatusBarUtil +import com.trello.rxlifecycle3.android.ActivityEvent +import com.yizhuan.erban.R +import com.yizhuan.erban.base.BaseViewBindingActivity +import com.yizhuan.erban.databinding.ActivityVerifyPhoneBinding +import com.yizhuan.erban.ui.login.AreaCodeActivity +import com.yizhuan.erban.ui.login.BindPhoneActivity +import com.yizhuan.xchat_android_core.auth.AuthModel +import com.yizhuan.xchat_android_core.code.CodeType +import com.yizhuan.xchat_android_core.pay.PayModel +import com.yizhuan.xchat_android_core.user.UserModel +import com.yizhuan.xchat_android_core.user.bean.UserInfo +import com.yizhuan.xchat_android_core.utils.net.BeanObserver +import com.yizhuan.xchat_android_library.utils.ResUtil -import com.netease.nim.uikit.StatusBarUtil; -import com.yizhuan.erban.R; -import com.yizhuan.erban.base.BaseBindingActivity; -import com.yizhuan.erban.databinding.ActivityVerifyPhoneBinding; -import com.yizhuan.erban.ui.login.BindSuccessDialog; -import com.yizhuan.erban.ui.login.CodeDownTimer; -import com.yizhuan.xchat_android_core.auth.AuthModel; -import com.yizhuan.xchat_android_core.bean.response.ServiceResult; -import com.yizhuan.xchat_android_core.code.CodeType; -import com.yizhuan.xchat_android_core.pay.PayModel; -import com.yizhuan.xchat_android_core.user.UserModel; -import com.yizhuan.xchat_android_core.utils.net.BeanObserver; -import com.yizhuan.xchat_android_library.annatation.ActLayoutRes; -import com.yizhuan.xchat_android_library.utils.ResUtil; +class VerifyPhoneActivity : BaseViewBindingActivity(), + View.OnClickListener, TextWatcher { + private var resetPwd = false + private var isForgetPwd = false + private var cdt: CountDownTimer? = null + private var type = CodeType.UNBIND_PHONE -import io.reactivex.Single; -import io.reactivex.SingleObserver; -import io.reactivex.SingleSource; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.Action; -import io.reactivex.functions.Consumer; -import io.reactivex.functions.Function; + private var isVerify = false + companion object { + const val REQUEST_CHECK_VALID_PHONE = 1001 -@ActLayoutRes(R.layout.activity_verify_phone) -public class VerifyPhoneActivity extends BaseBindingActivity implements View.OnClickListener, - BindSuccessDialog.BindSuccessDialogListener { - - public static final int REQUEST_CHECK_VALID_PHONE = 1001; - - private boolean isVerify; - private boolean resetPwd; - private boolean isForgetPwd; - private CodeDownTimer timer; - private int type = CodeType.UNBIND_PHONE; - - public static void start(Context context, boolean resetPwd) { - Intent intent = new Intent(context, VerifyPhoneActivity.class); - intent.putExtra("resetPwd", resetPwd); - context.startActivity(intent); - } - - public static void startForResult(Activity context, boolean isForgetPwd) { - Intent intent = new Intent(context, VerifyPhoneActivity.class); - intent.putExtra("isForgetPwd", isForgetPwd); - context.startActivityForResult(intent, REQUEST_CHECK_VALID_PHONE); - } - - @Override - protected void init() { - initWhiteTitleBar(ResUtil.getString(R.string.ui_setting_verifyphoneactivity_01)); - isForgetPwd = getIntent().getBooleanExtra("isForgetPwd", false); - resetPwd = getIntent().getBooleanExtra("resetPwd", false); - if (UserModel.get().getCacheLoginUserInfo() != null - && !TextUtils.isEmpty(UserModel.get().getCacheLoginUserInfo().getPhone())) { - mBinding.etPhone.setText(UserModel.get().getCacheLoginUserInfo().getPhone()); - mBinding.etPhone.setEnabled(false); + @JvmStatic + fun start(context: Context, resetPwd: Boolean) { + val intent = Intent(context, VerifyPhoneActivity::class.java) + intent.putExtra("resetPwd", resetPwd) + context.startActivity(intent) } - mBinding.btnGetCode.setOnClickListener(this); - mBinding.btnRegist.setOnClickListener(this); - mBinding.ivCodeDelete.setOnClickListener(this); + @JvmStatic + fun startForResult(context: Activity, isForgetPwd: Boolean) { + val intent = Intent(context, VerifyPhoneActivity::class.java) + intent.putExtra("isForgetPwd", isForgetPwd) + context.startActivityForResult(intent, REQUEST_CHECK_VALID_PHONE) + } + } + + override fun init() { + initWhiteTitleBar(ResUtil.getString(R.string.ui_setting_verifyphoneactivity_01)) + isForgetPwd = intent.getBooleanExtra("isForgetPwd", false) + resetPwd = intent.getBooleanExtra("resetPwd", false) + + initListener() + } + + private fun initListener() { + binding.tvAreaCode.setOnClickListener(this) + binding.tvGetCode.setOnClickListener(this) + binding.btnNext.setOnClickListener(this) + binding.etAccount.addTextChangedListener(this) + binding.etCode.addTextChangedListener(this) + } + + override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + + } + + override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + + } + + override fun afterTextChanged(p0: Editable?) { + binding.btnNext.isEnabled = !TextUtils.isEmpty(binding.etAccount.text.toString()) && + !TextUtils.isEmpty(binding.etCode.text.toString()) } @SuppressLint("CheckResult") - private void getCode() { - if (isForgetPwd) { - type = CodeType.RESET_PAY_PSW; + override fun onClick(v: View) { + when (v.id) { + R.id.tv_area_code -> { + AreaCodeActivity.startForResult(this, BindPhoneActivity.REQUEST_AREA_CODE) + } + R.id.tv_get_code -> { + if (isForgetPwd) { + type = CodeType.RESET_PAY_PSW + } + AuthModel.get() + .getSmsCode( + binding.tvAreaCode.text.toString().substring(1), + binding.tvAreaCode.text.toString() + .substring(1) + binding.etAccount.text.toString(), + type + ) + .compose(bindToLifecycle()) + .doOnError { throwable -> toast(throwable.message) } + .doOnSubscribe { + dialogManager.showProgressDialog( + this@VerifyPhoneActivity, + ResUtil.getString(R.string.ui_setting_verifyphoneactivity_02) + ) + } + .doAfterTerminate { dialogManager.dismissDialog() } + .subscribe { s: String?, throwable: Throwable? -> + if (throwable != null) { + return@subscribe + } + toast(ResUtil.getString(R.string.ui_setting_verifyphoneactivity_03)) + startCounter() + } + } + R.id.btn_next -> { + clickNextButton() + } } - AuthModel.get() - .sendLoginCode(mBinding.etPhone.getText().toString(), type) - .compose(bindToLifecycle()) - .doOnError(new Consumer() { - @Override - public void accept(Throwable throwable) throws Exception { - toast(throwable.getMessage()); - } - }) - .doOnSubscribe(new Consumer() { - @Override - public void accept(Disposable disposable) throws Exception { - getDialogManager().showProgressDialog(VerifyPhoneActivity.this, ResUtil.getString(R.string.ui_setting_verifyphoneactivity_02)); - } - }) - .doAfterTerminate(new Action() { - @Override - public void run() throws Exception { - getDialogManager().dismissDialog(); - } - }) - .subscribe((s, throwable) -> { - if (throwable != null) { - return; - } - toast(ResUtil.getString(R.string.ui_setting_verifyphoneactivity_03)); - startCountDownTimer(); - }); - } - private void clickRegistButton() { - if (TextUtils.isEmpty(mBinding.etPhone.getText().toString())) { - toast(ResUtil.getString(R.string.ui_setting_verifyphoneactivity_04)); - return; - } - if (TextUtils.isEmpty(mBinding.etCode.getText().toString())) { - toast(ResUtil.getString(R.string.ui_setting_verifyphoneactivity_05)); - return; - } + private fun clickNextButton() { if (isVerify) { - getDialogManager().showProgressDialog(this, ResUtil.getString(R.string.ui_setting_verifyphoneactivity_06)); - PayModel.get().bindPhone( - AuthModel.get().getCurrentUid() + "", - mBinding.etPhone.getText().toString(), - mBinding.etCode.getText().toString(), - AuthModel.get().getTicket() + dialogManager.showProgressDialog( + this, + ResUtil.getString(R.string.ui_login_bindcodeactivity_02) ) - .compose(bindToLifecycle()) - .flatMap(new Function, SingleSource>() { - @Override - public SingleSource apply(ServiceResult stringServiceResult) throws Exception { - if (stringServiceResult.isSuccess()) { - return Single.just(ResUtil.getString(R.string.ui_setting_verifyphoneactivity_07)); - } else { - return Single.error(new Throwable(stringServiceResult.getMessage())); - } - } - }) - .subscribe(new SingleObserver() { - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onSuccess(String s) { - getDialogManager().dismissDialog(); - bindSuccessDialog(); - } - - @Override - public void onError(Throwable e) { - getDialogManager().dismissDialog(); - toast(e.getMessage()); - } - }); + AuthModel.get().bindPhone( + binding.tvAreaCode.text.toString().substring(1), + binding.tvAreaCode.text.toString() + .substring(1) + binding.etAccount.text.toString(), + binding.etCode.text.toString() + ) + .compose(bindUntilEvent(ActivityEvent.DESTROY)) + .doOnSuccess { s: String? -> + toast(ResUtil.getString(R.string.ui_login_bindcodeactivity_03)) + setResult(RESULT_OK) + } + .doOnError { throwable: Throwable -> + toast( + throwable.message + ) + } + .flatMap { s: String? -> + UserModel.get().updateCurrentUserInfo() + } + .doOnSuccess { s: UserInfo? -> + setResult(RESULT_OK) + finish() + } + .doFinally { dialogManager.dismissDialog() } + .subscribe() } else { - getDialogManager().showProgressDialog(this, ResUtil.getString(R.string.ui_setting_verifyphoneactivity_08)); - PayModel.get().verifyCode( - mBinding.etPhone.getText().toString(), - mBinding.etCode.getText().toString() + dialogManager.showProgressDialog( + this, + ResUtil.getString(R.string.ui_setting_verifyphoneactivity_08) ) - .compose(bindToLifecycle()) - .subscribe(new BeanObserver() { - @Override - public void onErrorMsg(String error) { - getDialogManager().dismissDialog(); - toast(error); + PayModel.get().verifyCode( + binding.tvAreaCode.text.toString().substring(1), + binding.tvAreaCode.text.toString() + .substring(1) + binding.etAccount.text.toString(), + binding.etCode.text.toString(), + ) + .compose(bindToLifecycle()) + .subscribe(object : BeanObserver() { + override fun onErrorMsg(error: String) { + dialogManager.dismissDialog() + toast(error) + } + + override fun onSuccess(s: String) { + dialogManager.dismissDialog() + type = CodeType.BIND_PHONE + if (resetPwd) { + ModifyPwdActivity.start( + this@VerifyPhoneActivity, + ModifyPwdActivity.RESET_PAY_PWD + ) + finish() + } else if (isForgetPwd) { + setResult(RESULT_OK) + finish() + } else { + showModifyView() } - - @Override - public void onSuccess(String s) { - getDialogManager().dismissDialog(); - type = CodeType.BIND_PHONE; - if (resetPwd) { - ModifyPwdActivity.start(VerifyPhoneActivity.this, ModifyPwdActivity.RESET_PAY_PWD); - finish(); - } else if (isForgetPwd) { - setResult(RESULT_OK); - finish(); - } else { - showModifyView(); - } - } - }); - } - - } - - private void showModifyView() { - isVerify = true; - initWhiteTitleBar(ResUtil.getString(R.string.ui_setting_verifyphoneactivity_09)); - - if (timer != null) { - timer.cancel(); - } - - mBinding.text.setVisibility(View.GONE); - - mBinding.btnGetCode.setText(ResUtil.getString(R.string.ui_setting_verifyphoneactivity_010)); - mBinding.btnGetCode.setClickable(true);//重新获得点击 - - mBinding.btnRegist.setText(ResUtil.getString(R.string.ui_setting_verifyphoneactivity_011)); - mBinding.etPhone.setText(""); - mBinding.etPhone.setEnabled(true); - mBinding.etPhone.requestFocus(); - mBinding.etCode.setText(""); - - mBinding.vsPhoneCountry.getViewStub().inflate(); - mBinding.vDividerOne.setVisibility(View.VISIBLE); - - } - - private void bindSuccessDialog() { - BindSuccessDialog dialog = new BindSuccessDialog(); - dialog.setmListener(this); - dialog.show(getSupportFragmentManager(), "bindSuccess"); - } - - @Override - public void onClick(View v) { - super.onClick(v); - - switch (v.getId()) { - case R.id.iv_code_delete: - mBinding.etCode.setText(""); - break; - - case R.id.btn_regist: - clickRegistButton(); - break; - - case R.id.btn_get_code: - getCode(); - break; + } + }) } } - @Override - protected void onDestroy() { - super.onDestroy(); - stopCountDownTimer(); + private fun showModifyView() { + isVerify = true + initWhiteTitleBar(ResUtil.getString(R.string.text_bind_phone)) + binding.etAccount.setText("") + binding.etCode.setText("") + resetBtn() + binding.btnNext.text = ResUtil.getString(R.string.ui_setting_verifyphoneactivity_011) } - @Override - public void close() { - finish(); - } - - private void startCountDownTimer() { - stopCountDownTimer(); - timer = new CodeDownTimer(mBinding.btnGetCode, 60000, 1000); - timer.start(); - } - - private void stopCountDownTimer() { - if (timer != null) { - timer.cancel(); - timer = null; + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (requestCode == BindPhoneActivity.REQUEST_AREA_CODE && resultCode == RESULT_OK) { + val areaCode = data?.getStringExtra(AreaCodeActivity.COUNTRY_NUMBER) + if (areaCode != null) { + binding.tvAreaCode.text = areaCode + } } } - @Override - protected boolean needSteepStateBar() { - return true; + private fun startCounter() { + stopCounter() + //开始倒计时 60s 间隔1s + binding.tvGetCode.isEnabled = false + binding.tvGetCode.setTextColor(ContextCompat.getColor(this, R.color.color_9168FA)) + cdt = object : CountDownTimer(60 * 1000, 100) { + override fun onTick(text: Long) { + showTextDown(text) + } + + override fun onFinish() { + resetBtn() + } + } + cdt?.start() } - @Override - protected void setStatusBar() { - super.setStatusBar(); - StatusBarUtil.transparencyBar(this); - StatusBarUtil.StatusBarLightMode(this); + private fun showTextDown(text: Long) { + val time = (text / 1000).toString() + "s" + binding.tvGetCode.text = time } -} + + private fun stopCounter() { + cdt?.cancel() + cdt = null + } + + private fun resetBtn() { + stopCounter() + binding.tvGetCode.setTextColor(ContextCompat.getColor(this, R.color.text_title_color)) + binding.tvGetCode.isEnabled = true + binding.tvGetCode.text = getString(R.string.text_request_code) + } + + override fun needSteepStateBar(): Boolean { + return true + } + + override fun setStatusBar() { + super.setStatusBar() + StatusBarUtil.transparencyBar(this) + StatusBarUtil.StatusBarLightMode(this) + } + + override fun onDestroy() { + super.onDestroy() + dialogManager.dismissDialog() + stopCounter() + } + +} \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi/icon_show_bind_phone.webp b/app/src/main/res/drawable-xhdpi/icon_show_bind_phone.webp index 5d0b59427..e91dd0a88 100644 Binary files a/app/src/main/res/drawable-xhdpi/icon_show_bind_phone.webp and b/app/src/main/res/drawable-xhdpi/icon_show_bind_phone.webp differ diff --git a/app/src/main/res/layout/activity_area_code.xml b/app/src/main/res/layout/activity_area_code.xml new file mode 100644 index 000000000..484479309 --- /dev/null +++ b/app/src/main/res/layout/activity_area_code.xml @@ -0,0 +1,30 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_authorization_code.xml b/app/src/main/res/layout/activity_authorization_code.xml new file mode 100644 index 000000000..0ad7f270f --- /dev/null +++ b/app/src/main/res/layout/activity_authorization_code.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + +