Add error handle for login page

This commit is contained in:
2023-09-01 16:16:34 +08:00
parent 239d1675af
commit 09a950486b
5 changed files with 29 additions and 3 deletions

View File

@@ -106,3 +106,5 @@ EHApi get api {
final AuthInfo auth = AuthInfo();
final Path platformPath = Path();
final GlobalKey<ScaffoldMessengerState> rootScaffoldMessengerKey =
GlobalKey<ScaffoldMessengerState>();

View File

@@ -6,5 +6,8 @@
"password": "Password",
"save": "Save",
"login": "Login",
"titleBar": "EH Downloader"
"titleBar": "EH Downloader",
"incorrectUserPassword": "Incorrect username or password.",
"networkError": "Network error.",
"internalError": "Some internal error occurred. Please send the log file to the developer."
}

View File

@@ -6,5 +6,8 @@
"password": "密码",
"save": "保存",
"login": "登录",
"titleBar": "EH 下载器"
"titleBar": "EH 下载器",
"incorrectUserPassword": "不正确的用户名或密码。",
"networkError": "网络错误。",
"internalError": "出现了内部错误,请将日志发送给开发者。"
}

View File

@@ -70,7 +70,9 @@ class _LoginPageState extends State<LoginPage> {
setCookie: true,
httpOnly: true,
secure: u.scheme == 'https');
return re.ok;
if (re.ok) return true;
if (re.status == 4) return false;
throw re.unwrapErr();
}
void _checkStatus(BuildContext build) {
@@ -147,12 +149,27 @@ class _LoginPageState extends State<LoginPage> {
if (re) {
context.go("/");
} else {
final snackBar = SnackBar(
content: Text(
AppLocalizations.of(context)!
.incorrectUserPassword));
ScaffoldMessenger.of(context)
.showSnackBar(snackBar);
setState(() {
_isLogin = false;
});
}
}).catchError((e) {
_log.severe("Failed to login:", e);
final isNetworkError = e is! (int, String);
final snackBar = SnackBar(
content: Text(isNetworkError
? AppLocalizations.of(context)!
.networkError
: AppLocalizations.of(context)!
.internalError));
ScaffoldMessenger.of(context)
.showSnackBar(snackBar);
setState(() {
_isLogin = false;
});

View File

@@ -123,6 +123,7 @@ class _MainApp extends State<MainApp> {
theme: _themeData,
darkTheme: _darkThemeData,
themeMode: _themeMode,
scaffoldMessengerKey: rootScaffoldMessengerKey,
);
}