| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- import 'dart:async';
- import 'dart:io';
- import 'package:flutter/cupertino.dart';
- import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
- import 'package:get/get.dart';
- import 'package:injectable/injectable.dart';
- import 'package:keyboard/base/base_controller.dart';
- import 'package:keyboard/data/repository/account_repository.dart';
- import 'package:keyboard/dialog/loading_dialog.dart';
- import 'package:keyboard/module/login/login_page.dart';
- import 'package:keyboard/utils/atmob_log.dart';
- import 'package:keyboard/utils/toast_util.dart';
- import 'package:sign_in_with_apple/sign_in_with_apple.dart';
- import '../../data/consts/error_code.dart';
- import '../../data/consts/event_report.dart';
- import '../../handler/event_handler.dart';
- import '../../handler/wechat_login_service.dart';
- import '../../resource/string.gen.dart';
- import '../../utils/error_handler.dart';
- import '../../utils/http_handler.dart';
- import '../member_agreement_dialog.dart';
- import '../privacy_agreement_dialog.dart';
- import 'login_dialog.dart';
- @injectable
- class LoginDialogController extends BaseController {
- final tag = "LoginDialogController";
- final WechatLoginService wechatLoginService;
- final AccountRepository accountRepository;
- LoginDialogController(this.wechatLoginService, this.accountRepository);
- final RxBool _isAgree = false.obs;
- bool get isAgree => _isAgree.value;
- clickAgree() {
- _isAgree.value = !_isAgree.value;
- }
- void clickWxLogin() async {
- EventHandler.report(EventId.event_04001);
- if (!_isAgree.value) {
- PrivacyAgreementDialog.show(
- btnConfirm: () async {
- _isAgree.value = true;
- clickWxLogin();
- },
- );
- return;
- }
- wechatLoginService.login(
- onSuccess: (code) {
- accountRepository
- .wechatLogin(code)
- .then((data) {
- ToastUtil.show(StringName.loginSuccess);
- SmartDialog.dismiss(tag: LoginDialog.TAG);
- EventHandler.report(EventId.event_04003);
- })
- .catchError((error) {
- if (error is ServerErrorException) {
- if (error.code == ErrorCode.verificationCodeError) {
- ToastUtil.show(StringName.loginVerificationCodeErrorToast);
- } else {
- ToastUtil.show(error.message);
- }
- } else {
- ErrorHandler.toastError(error);
- }
- EventHandler.report(EventId.event_04004);
- });
- },
- onError: (code, msg) {
- EventHandler.report(EventId.event_04004);
- ToastUtil.show("微信登录失败:$msg");
- },
- onCancel: () {
- EventHandler.report(EventId.event_04004);
- ToastUtil.show("用户取消登录");
- },
- );
- }
- // 苹果登录点击
- void clickAppleLogin() async {
- if (!_isAgree.value) {
- PrivacyAgreementDialog.show(
- btnConfirm: () async {
- _isAgree.value = true;
- clickAppleLogin();
- },
- );
- ToastUtil.show(StringName.loginAgreePrivacy);
- return;
- }
- CustomLoadingDialog.show();
- AuthorizationCredentialAppleID credential;
- try {
- credential = await SignInWithApple.getAppleIDCredential(
- scopes: [
- AppleIDAuthorizationScopes.email,
- AppleIDAuthorizationScopes.fullName,
- ],
- );
- } catch (error) {
- CustomLoadingDialog.hide();
- ToastUtil.show(StringName.loginFailedToast);
- return;
- }
- var userIdentity = credential.userIdentifier ?? "";
- var authorizationCode = credential.authorizationCode ?? "";
- var identityToken = credential.identityToken ?? "";
- accountRepository
- .appleLogin(userIdentity, authorizationCode, identityToken)
- .then((data) {
- CustomLoadingDialog.hide();
- EventHandler.report(EventId.event_04003);
- SmartDialog.dismiss(tag: LoginDialog.TAG);
- ToastUtil.show(StringName.loginSuccess);
- })
- .catchError((error) {
- CustomLoadingDialog.hide();
- EventHandler.report(EventId.event_04004);
- if (error is LoginTooOftenException) {
- ToastUtil.show(StringName.loginTooOftenToast);
- return;
- }
- if (error is ServerErrorException) {
- if (error.code == ErrorCode.verificationCodeError) {
- ToastUtil.show(StringName.loginVerificationCodeErrorToast);
- } else {
- ToastUtil.show(error.message);
- }
- } else {
- ErrorHandler.toastError(error);
- }
- });
- }
- void clickClose() {
- AtmobLog.d(tag, "clickClose");
- SmartDialog.dismiss(tag: LoginDialog.TAG);
- }
- void clickPhoneLogin() {
- AtmobLog.d(tag, "clickPhoneLogin");
- EventHandler.report(EventId.event_04002);
- LoginPage.start();
- SmartDialog.dismiss(tag: LoginDialog.TAG);
- }
- @override
- void onInit() {
- super.onInit();
- }
- @override
- void onClose() {
- super.onClose();
- }
- }
|