|
@@ -1,12 +1,15 @@
|
|
|
|
|
+import 'dart:async';
|
|
|
|
|
+
|
|
|
import 'package:get/get.dart';
|
|
import 'package:get/get.dart';
|
|
|
import 'package:get/get_core/src/get_main.dart';
|
|
import 'package:get/get_core/src/get_main.dart';
|
|
|
import 'package:injectable/injectable.dart';
|
|
import 'package:injectable/injectable.dart';
|
|
|
import 'package:location/base/base_controller.dart';
|
|
import 'package:location/base/base_controller.dart';
|
|
|
import 'package:location/data/consts/error_code.dart';
|
|
import 'package:location/data/consts/error_code.dart';
|
|
|
import 'package:location/resource/string.gen.dart';
|
|
import 'package:location/resource/string.gen.dart';
|
|
|
|
|
+import 'package:location/sdk/quicklogin/quick_login_helper.dart';
|
|
|
|
|
+import 'package:location/utils/atmob_log.dart';
|
|
|
import 'package:location/utils/http_handler.dart';
|
|
import 'package:location/utils/http_handler.dart';
|
|
|
import 'package:location/utils/toast_util.dart';
|
|
import 'package:location/utils/toast_util.dart';
|
|
|
-
|
|
|
|
|
import '../../data/repositories/account_repository.dart';
|
|
import '../../data/repositories/account_repository.dart';
|
|
|
import '../../utils/de_bounce.dart';
|
|
import '../../utils/de_bounce.dart';
|
|
|
|
|
|
|
@@ -35,9 +38,69 @@ class LoginController extends BaseController {
|
|
|
final Debounce _saveDebounce = Debounce(debounceTime: 1000);
|
|
final Debounce _saveDebounce = Debounce(debounceTime: 1000);
|
|
|
bool isRequestLogin = false;
|
|
bool isRequestLogin = false;
|
|
|
|
|
|
|
|
|
|
+ final Rx<LoginStatus> _loginStatus = Rx(LoginStatus.loading);
|
|
|
|
|
+
|
|
|
|
|
+ LoginStatus get loginStatus => _loginStatus.value;
|
|
|
|
|
+
|
|
|
|
|
+ final RxBool _isSupportOneLogin = RxBool(false);
|
|
|
|
|
+
|
|
|
|
|
+ bool get isSupportOneLogin => _isSupportOneLogin.value;
|
|
|
|
|
+
|
|
|
|
|
+ bool? _isOneLoginSuccess;
|
|
|
|
|
+
|
|
|
|
|
+ StreamSubscription? eventOneLoginSubscription;
|
|
|
|
|
+
|
|
|
@override
|
|
@override
|
|
|
void onReady() {
|
|
void onReady() {
|
|
|
super.onReady();
|
|
super.onReady();
|
|
|
|
|
+ QuickLoginHelper.preFetchNumber(onSuccess: (token) {
|
|
|
|
|
+ _isSupportOneLogin.value = true;
|
|
|
|
|
+ onePassLogin();
|
|
|
|
|
+ }, onError: (errorMsg) {
|
|
|
|
|
+ _loginStatus.value = LoginStatus.codeLogin;
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ eventOneLoginSubscription = QuickLoginHelper.getEventChannel()
|
|
|
|
|
+ .receiveBroadcastStream()
|
|
|
|
|
+ .listen(_onOneLoginData);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ void _onOneLoginData(response) {
|
|
|
|
|
+ AtmobLog.d('LoginController', 'response:$response');
|
|
|
|
|
+ if (response is Map) {
|
|
|
|
|
+ var action = (response)["action"];
|
|
|
|
|
+ switch (action) {
|
|
|
|
|
+ case "authViewWillAppear":
|
|
|
|
|
+ _loginStatus.value = LoginStatus.oneLogin;
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "authViewWillDisappear":
|
|
|
|
|
+ if (_isOneLoginSuccess != true &&
|
|
|
|
|
+ loginStatus == LoginStatus.oneLogin) {
|
|
|
|
|
+ Get.back();
|
|
|
|
|
+ }
|
|
|
|
|
+ case "code_login":
|
|
|
|
|
+ QuickLoginHelper.closeLoginAuthView();
|
|
|
|
|
+ _loginStatus.value = LoginStatus.codeLogin;
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ void onePassLogin() {
|
|
|
|
|
+ //尝试打开一键登录页面
|
|
|
|
|
+ QuickLoginHelper.onePassLogin(onSuccess: (ydToken, accessToken) {
|
|
|
|
|
+ _isOneLoginSuccess = true;
|
|
|
|
|
+ accountRepository
|
|
|
|
|
+ .oneClickLogin(token: ydToken, accessToken: accessToken)
|
|
|
|
|
+ .then((_) {
|
|
|
|
|
+ Get.back();
|
|
|
|
|
+ }).catchError((error) {
|
|
|
|
|
+ _loginStatus.value = LoginStatus.codeLogin;
|
|
|
|
|
+ ToastUtil.show(StringName.oneLoginError);
|
|
|
|
|
+ });
|
|
|
|
|
+ }, onError: (msg) {
|
|
|
|
|
+ _loginStatus.value = LoginStatus.codeLogin;
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void onPhoneChanged(String value) {
|
|
void onPhoneChanged(String value) {
|
|
@@ -104,12 +167,6 @@ class LoginController extends BaseController {
|
|
|
_isAgreePrivacy.value = !_isAgreePrivacy.value;
|
|
_isAgreePrivacy.value = !_isAgreePrivacy.value;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- @override
|
|
|
|
|
- void onClose() {
|
|
|
|
|
- super.onClose();
|
|
|
|
|
- _countDown.value = null;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
void onLoginClick() {
|
|
void onLoginClick() {
|
|
|
_saveDebounce.onClick(() {
|
|
_saveDebounce.onClick(() {
|
|
|
login();
|
|
login();
|
|
@@ -153,4 +210,17 @@ class LoginController extends BaseController {
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ void onOneLoginClick() {
|
|
|
|
|
+ onePassLogin();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @override
|
|
|
|
|
+ void onClose() {
|
|
|
|
|
+ super.onClose();
|
|
|
|
|
+ _countDown.value = null;
|
|
|
|
|
+ eventOneLoginSubscription?.cancel();
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+enum LoginStatus { loading, codeLogin, oneLogin }
|