From 9fa666d0b8314cb03ada2a2f148f05744c044558 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sun, 21 Apr 2024 21:49:05 +0800 Subject: [PATCH] :sparkles: Handle risk detection --- lib/i18n/app_en.arb | 2 ++ lib/i18n/app_zh.arb | 2 ++ lib/screens/signin.dart | 32 +++++++++++++++++++++++++++++--- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/lib/i18n/app_en.arb b/lib/i18n/app_en.arb index 974d624..5480722 100644 --- a/lib/i18n/app_en.arb +++ b/lib/i18n/app_en.arb @@ -3,9 +3,11 @@ "explore": "Explore", "chat": "Chat", "account": "Account", + "riskDetection": "Risk Detection", "signIn": "Sign In", "signInCaption": "Sign in to create post, start a realm, message your friend and more!", "signInRequired": "Sign in required", + "signInRiskDetected": "Risk detected, click Next to open a webpage and signin through it to pass security check.", "signUp": "Sign Up", "signUpCaption": "Create an account on Solarpass and then get the access of entire Solar Networks!", "poweredBy": "Powered by Project Hydrogen", diff --git a/lib/i18n/app_zh.arb b/lib/i18n/app_zh.arb index 4139935..23fa963 100644 --- a/lib/i18n/app_zh.arb +++ b/lib/i18n/app_zh.arb @@ -3,9 +3,11 @@ "explore": "探索", "chat": "聊天", "account": "账号", + "riskDetection": "风险监测", "signIn": "登陆", "signInCaption": "登陆以发表帖子、文章、创建领域、和你的朋友聊天,以及获取更多功能!", "signInRequired": "请先登陆", + "signInRiskDetected": "检测到风险,点击下一步按钮来打开一个网页,并通过在其上面登陆来通过安全检查。", "signUp": "注册", "signUpCaption": "在 Solarpass 注册一个账号以获得整个 Solar Networks 的存取权!", "poweredBy": "由 Project Hydrogen 强力驱动", diff --git a/lib/screens/signin.dart b/lib/screens/signin.dart index 20f977c..610a04b 100644 --- a/lib/screens/signin.dart +++ b/lib/screens/signin.dart @@ -3,7 +3,9 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:provider/provider.dart'; import 'package:solian/providers/auth.dart'; import 'package:solian/router.dart'; +import 'package:solian/utils/service_url.dart'; import 'package:solian/widgets/indent_wrapper.dart'; +import 'package:url_launcher/url_launcher_string.dart'; class SignInScreen extends StatelessWidget { final _usernameController = TextEditingController(); @@ -59,9 +61,33 @@ class SignInScreen extends StatelessWidget { auth.signin(context, username, password).then((_) { router.pop(true); }).catchError((e) { - ScaffoldMessenger.of(context).showSnackBar(SnackBar( - content: Text(e.toString()), - )); + List messages = e.toString().split('\n'); + if (messages.last.contains("risk")) { + showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: Text(AppLocalizations.of(context)!.riskDetection), + content: Text(AppLocalizations.of(context)!.signInRiskDetected), + actions: [ + TextButton( + child: Text(AppLocalizations.of(context)!.next), + onPressed: () { + launchUrlString(getRequestUri('passport', '/sign-in').toString()); + if (Navigator.canPop(context)) { + Navigator.pop(context); + } + }, + ) + ], + ); + }, + ); + } else { + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text(messages.last), + )); + } }); }, )