令牌输错时给出提示

登录页在提交前后都是同一个组件,不重建、输入框也不清空,401 静默处理的话
点了「进入」界面一个字都不变,看着像没反应。

只在提交令牌时提示:存着的令牌失效而弹回登录页时,页面本身就是说明。
This commit is contained in:
2026-08-14 14:06:24 +08:00
parent 0f0ac3c4b7
commit ea0efd4468
+15 -5
View File
@@ -53,7 +53,7 @@ function openInbound(id: string) {
* 选中的那一路入站丢失,改完一个设置还要重新找回原来的位置。所以只有首次加载显示占位,
* 之后都是原地更新。
*/
async function load() {
async function load(): Promise<'ok' | 'unauthorized' | 'error'> {
refreshing.value = true
loadError.value = ''
try {
@@ -64,22 +64,32 @@ async function load() {
needsToken.value = false
// 撤回/重做按钮的可用性跟着每次重读走
void refreshHistory()
return 'ok'
} catch (error) {
if (error instanceof ApiError && error.unauthorized) {
clearToken()
needsToken.value = true
} else {
loadError.value = error instanceof Error ? error.message : String(error)
return 'unauthorized'
}
loadError.value = error instanceof Error ? error.message : String(error)
return 'error'
} finally {
refreshing.value = false
booted.value = true
}
}
function submitToken(value: string) {
/**
* 提交登录页填的令牌。
*
* 401 必须当场说一声:登录页在提交前后都是它自己,组件不重建、输入框也不清空,
* 不提示的话点了「进入」界面一个字都不变,看着像没反应。
* 只在这里提示,不在 load() 里——存着的令牌失效时弹回登录页,页面本身就是说明。
*/
async function submitToken(value: string) {
setToken(value)
void load()
// 令牌在哪儿取,登录页上就写着,不必在提示里再说一遍
if ((await load()) === 'unauthorized') toast('令牌不正确', { kind: 'error' })
}
function logout() {