コード例 #1
0
 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);
         });
     });
 }
コード例 #2
0
 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);
         });
     }));
 }
コード例 #3
0
        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;
                    }
                });
            }
        }
コード例 #4
0
 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;
             }
         }
     }
 }
コード例 #5
0
        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);
                }
                         );
            }));
        }