import 'dart:async'; import 'package:flutter/cupertino.dart'; import 'package:get/get.dart'; import 'package:star_lock/appRouters.dart'; import 'package:star_lock/login/login/entity/LoginData.dart'; import 'package:star_lock/login/register/entity/SendValidationCodeEntity.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart'; import 'package:star_lock/mine/minePersonInfo/minePersonInfoEmail/mineBindPhoneOrEmail_state.dart'; import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import '../../../tools/eventBusEventManage.dart'; import '../../../tools/storage.dart'; class MineBindPhoneOrEmailLogic extends BaseGetXController { final MineBindPhoneOrEmailState state = MineBindPhoneOrEmailState(); late Timer _timer; void _startTimer() { _timer = Timer.periodic(1.seconds, (Timer timer) { if (state.currentSecond > 1) { state.currentSecond--; } else { _cancelTimer(); state.currentSecond = state.totalSeconds; } state.resetResend(); }); } void _cancelTimer() { _timer.cancel(); } //获取验证码请求 Future sendValidationCode() async { final SendValidationCodeEntity entity = await ApiRepository.to.sendValidationCodeAuth( countryCode: state.channel.value == '1' ? state.countryCode.value : '', account: state.inputAccount.value, channel: state.channel.value, codeType: state.codeType.value, xWidth: state.xWidth.value.toString()); if (entity.errorCode!.codeIsSuccessful) { _startTimer(); } } //绑定邮箱请求 Future bindEmailRequest() async { final PasswordKeyListEntity entity = await ApiRepository.to.bindEmail( state.inputAccount.value, state.verificationCode.value, state.unbindToken.value); if (entity.errorCode!.codeIsSuccessful) { showToast('邮箱绑定成功'.tr, something: () async { final LoginData? loginData = await Storage.getLoginData(); loginData!.email = state.inputAccount.value; Storage.saveLoginData(loginData); eventBus.fire(MineInfoChangeRefreshUI()); Get.until((Route route) => route.settings.name == Routers.minePersonInfoPage); }); } } //绑定手机请求 Future bindMobileRequest() async { final PasswordKeyListEntity entity = await ApiRepository.to.bindPhone( state.countryCode.value, state.inputAccount.value, state.verificationCode.value, state.unbindToken.value); if (entity.errorCode!.codeIsSuccessful) { showToast('手机绑定成功'.tr, something: () async { final LoginData? loginData = await Storage.getLoginData(); loginData!.mobile = state.inputAccount.value; Storage.saveLoginData(loginData); eventBus.fire(MineInfoChangeRefreshUI()); Get.until((Route route) => route.settings.name == Routers.minePersonInfoPage); }); } } void checkNext(TextEditingController controller) { changeInput(controller); } void changeInput(TextEditingController controller) { if (controller == state.accountController) { state.inputAccount.value = controller.text; state.accountIsOK.value = state.inputAccount.value.isNotEmpty; } if (controller == state.codeController) { state.verificationCode.value = controller.text; } _resetCanSub(); } void _resetCanSub() { state.canSub.value = state.codeIsOK; } }