From f1a86d59ca64247a5823fc12e48cf08036f319e9 Mon Sep 17 00:00:00 2001 From: qwqcode Date: Wed, 28 Aug 2024 11:12:30 +0800 Subject: [PATCH] fix(ui/sidebar): disable admin password check dialog in sidebar --- ui/artalk-sidebar/src/App.vue | 20 ++++++++++++++++---- ui/artalk/src/api/handler.ts | 5 +++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/ui/artalk-sidebar/src/App.vue b/ui/artalk-sidebar/src/App.vue index edd9bc44..575436cd 100644 --- a/ui/artalk-sidebar/src/App.vue +++ b/ui/artalk-sidebar/src/App.vue @@ -48,6 +48,21 @@ function syncArtalk(artalk: Artalk) { const artalkUser = artalk.ctx.get('user') const artalkUserData = artalkUser.getData() + const logout = () => { + user.logout() + nextTick(() => { + router.replace('/login') + }) + } + + // Remove login failed dialog if sidebar + artalk.ctx.getApiHandlers().remove('need_login') + artalk.ctx.getApiHandlers().add('need_login', async () => { + logout() + throw new Error('Need login') + }) + + // Check user status artalk.ctx .getApi() .user.getUserStatus({ @@ -56,10 +71,7 @@ function syncArtalk(artalk: Artalk) { }) .then((res) => { if (res.data.is_admin && !res.data.is_login) { - user.logout() - nextTick(() => { - router.replace('/login') - }) + logout() } else { // 将全部通知标记为已读 artalk.ctx.getApi().notifies.markAllNotifyRead({ diff --git a/ui/artalk/src/api/handler.ts b/ui/artalk/src/api/handler.ts index 2ee0fd3d..9027aa83 100644 --- a/ui/artalk/src/api/handler.ts +++ b/ui/artalk/src/api/handler.ts @@ -16,6 +16,7 @@ export interface ApiHandlers { action: T, handler: (data: ApiHandlerPayload[T]) => Promise, ) => void + remove: (action: PayloadKey) => void get: () => ApiHandler[] } @@ -25,6 +26,10 @@ export function createApiHandlers(): ApiHandlers { add: (action, handler) => { handlers.push({ action, handler }) }, + remove: (action) => { + const index = handlers.findIndex((h) => h.action === action) + if (index !== -1) handlers.splice(index, 1) + }, get: () => handlers, } }