From 482b371e037ed10fb9f0493720cd80fc8a72269b Mon Sep 17 00:00:00 2001 From: Harry Chen Date: Sat, 11 Sep 2021 09:56:30 +0800 Subject: [PATCH] Refine login prompts Signed-off-by: Harry Chen --- src/redux/actions/helper.ts | 8 ++++---- src/utils/format.ts | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/redux/actions/helper.ts b/src/redux/actions/helper.ts index e0076ca..e4ac6e4 100644 --- a/src/redux/actions/helper.ts +++ b/src/redux/actions/helper.ts @@ -1,5 +1,5 @@ import { Learn2018Helper } from 'thu-learn-lib/lib'; -import { ContentType, SemesterType, FailReason } from 'thu-learn-lib/lib/types'; +import { ContentType, SemesterType, FailReason, ApiError } from 'thu-learn-lib/lib/types'; import { loginEnd, @@ -46,17 +46,17 @@ export function login(username: string, password: string, save: boolean) { // wait at most 5 seconds for timeout const timeout = new Promise((_, reject) => { setTimeout(() => { - reject(FailReason.NOT_LOGGED_IN); + reject({ reason: 'TIMEOUT' }); }, 5000); }); try { await Promise.race([helper.login(username, password), timeout]); } catch (e) { - const error = e as FailReason; + const error = e as ApiError; dispatch( showSnackbar( - `登录失败:${failReasonToString(error) ?? error ?? '未知错误'}`, + `登录失败:${failReasonToString(error?.reason) ?? error ?? '未知错误'}`, SnackbarType.ERROR, ), ); diff --git a/src/utils/format.ts b/src/utils/format.ts index bcf54ca..23858c7 100644 --- a/src/utils/format.ts +++ b/src/utils/format.ts @@ -72,10 +72,12 @@ const FAIL_REASON_MAPPING = { [FailReason.ERROR_FETCH_FROM_ID]: '无法从 id.tsinghua.edu.cn 获取票据', [FailReason.ERROR_ROAMING]: '无法使用票据漫游至 learn.tsinghua.edu.cn', [FailReason.NOT_IMPLEMENTED]: '功能尚未实现', - [FailReason.NOT_LOGGED_IN]: '登录超时', + [FailReason.NOT_LOGGED_IN]: '尚未登录', [FailReason.NO_CREDENTIAL]: '未提供用户名或密码', + [FailReason.UNEXPECTED_STATUS]: '非预期的 HTTP 响应状态', + 'TIMEOUT': '请求超时', }; export function failReasonToString(reason: FailReason): string { - return FAIL_REASON_MAPPING[reason]; + return FAIL_REASON_MAPPING[reason] ?? '未知错误'; }