static void checkToken(string token) { CustomDialogUtils.showCustomDialog( child: new CustomLoadingDialog( message: "验证中" ) ); LoginApi.LoginByQr(token: token, "check").Then(success => { CustomDialogUtils.hiddenCustomDialog(); StoreProvider.store.dispatcher.dispatch( new MainNavigatorPushToQRScanLoginAction { token = token } ); CustomDialogUtils.showToast("验证成功", iconData: Icons.sentiment_satisfied); AnalyticsManager.AnalyticsQRScan(state: QRState.check); }).Catch(error => { CustomDialogUtils.hiddenCustomDialog(); CustomDialogUtils.showToast("验证失败", iconData: Icons.sentiment_dissatisfied); Promise.Delayed(new TimeSpan(0, 0, 1)) .Then(() => { PushToQRScan(); AnalyticsManager.AnalyticsQRScan(state: QRState.check, false); }); }); }
public static object loginByQr(string token, string action) { return(new ThunkAction <AppState>((dispatcher, getState) => { return LoginApi.LoginByQr(token: token, action: action) .Then(success => { if (action != "confirm") { return; } CustomDialogUtils.hiddenCustomDialog(); dispatcher.dispatch(new MainNavigatorPopAction()); CustomDialogUtils.showToast( success ? "扫码成功" : "扫码失败", success ? Icons.sentiment_satisfied : Icons.sentiment_dissatisfied ); }) .Catch(error => { if (action != "confirm") { return; } CustomDialogUtils.hiddenCustomDialog(); dispatcher.dispatch(new MainNavigatorPopAction()); CustomDialogUtils.showToast("扫码失败", iconData: Icons.sentiment_dissatisfied); }); })); }
static void addListener() { if (Application.isEditor) { return; } if (!isListen) { isListen = true; UIWidgetsMessageManager.instance.AddChannelMessageDelegate("QRScan", del: _handleMethodCall); if (_loginSubId.isNotEmpty()) { EventBus.unSubscribe(sName: EventBusConstant.login_success, id: _loginSubId); } _loginSubId = EventBus.subscribe(sName: EventBusConstant.login_success, args => { if (qrCodeToken.isNotEmpty()) { LoginApi.LoginByQr(token: qrCodeToken, "check"); StoreProvider.store.dispatcher.dispatch(new MainNavigatorPushToQRScanLoginAction { token = qrCodeToken }); qrCodeToken = null; } }); } }
static void _handleMethodCall(string method, List <JSONNode> args) { if (context != null) { using (WindowProvider.of(context: context).getScope()) { switch (method) { case "OnReceiveQRCode": { string qrCode = args[0]; if (qrCode.StartsWith("http://") || qrCode.StartsWith("https://")) { var uri = new Uri(uriString: qrCode); if (uri.AbsoluteUri.StartsWith("https://connect")) { var token = HttpUtility.ParseQueryString(query: uri.Query).Get("token"); if (token.isNotEmpty()) { var isLoggedIn = StoreProvider.store.getState().loginState.isLoggedIn; if (isLoggedIn) { LoginApi.LoginByQr(token: token, "check"); StoreProvider.store.dispatcher.dispatch(new MainNavigatorPushToQRScanLoginAction { token = token }); } else { qrCodeToken = token; StoreProvider.store.dispatcher.dispatch(new MainNavigatorPushToAction { routeName = MainNavigatorRoutes.Login }); } } else { StoreProvider.store.dispatcher.dispatch(new MainNavigatorPushToWebViewAction { url = qrCode }); } } else { StoreProvider.store.dispatcher.dispatch(new MainNavigatorPushToWebViewAction { url = qrCode }); } } StatusBarManager.hideStatusBar(false); StatusBarManager.statusBarStyle(false); removeListener(); } break; } } } }
public static object loginByQr(string token, string action) { return(new ThunkAction <AppState>((dispatcher, getState) => { return LoginApi.LoginByQr(token: token, action: action).Then(success => { if (action == "cancel") { AnalyticsManager.AnalyticsQRScan(state: QRState.cancel); return; } CustomDialogUtils.hiddenCustomDialog(); dispatcher.dispatch(new MainNavigatorPopAction()); CustomDialogUtils.showToast( success ? "登录成功" : "登录失败", success ? Icons.sentiment_satisfied : Icons.sentiment_dissatisfied ); if (success) { AnalyticsManager.AnalyticsQRScan(state: QRState.confirm); } else { AnalyticsManager.AnalyticsQRScan(state: QRState.confirm, false); } }).Catch(error => { Debuger.LogError($"confirm api error: {error}, action: {action}"); if (action == "cancel") { AnalyticsManager.AnalyticsQRScan(state: QRState.cancel, false); return; } CustomDialogUtils.hiddenCustomDialog(); dispatcher.dispatch(new MainNavigatorPopAction()); CustomDialogUtils.showToast("登录失败", iconData: Icons.sentiment_dissatisfied); AnalyticsManager.AnalyticsQRScan(state: QRState.confirm, false); } ); })); }