fix: 修复一些前端的小问题 (#641)

This commit is contained in:
ᴀᴍᴛᴏᴀᴇʀ
2026-02-06 14:12:18 +08:00
committed by GitHub
parent 580a66eb17
commit c49ec81d51
3 changed files with 36 additions and 35 deletions
+28 -23
View File
@@ -1,35 +1,35 @@
import type { import type {
ApiResponse,
VideoSourcesResponse,
VideosRequest,
VideosResponse,
VideoResponse,
ResetVideoResponse,
ClearAndResetVideoResponse,
ResetFilteredVideosResponse,
UpdateVideoStatusRequest,
UpdateVideoStatusResponse,
ApiError, ApiError,
FavoritesResponse, ApiResponse,
ClearAndResetVideoResponse,
CollectionsResponse, CollectionsResponse,
UppersResponse,
InsertFavoriteRequest,
InsertCollectionRequest,
InsertSubmissionRequest,
VideoSourcesDetailsResponse,
UpdateVideoSourceRequest,
Config, Config,
DashBoardResponse, DashBoardResponse,
FavoritesResponse,
QrcodeGenerateResponse as GenerateQrcodeResponse,
InsertCollectionRequest,
InsertFavoriteRequest,
InsertSubmissionRequest,
Notifier,
QrcodePollResponse as PollQrcodeResponse,
ResetFilteredVideosResponse,
ResetFilteredVideoStatusRequest,
ResetVideoResponse,
ResetVideoStatusRequest,
SysInfo, SysInfo,
TaskStatus, TaskStatus,
ResetVideoStatusRequest,
UpdateVideoSourceResponse,
Notifier,
UpdateFilteredVideoStatusRequest, UpdateFilteredVideoStatusRequest,
UpdateFilteredVideoStatusResponse, UpdateFilteredVideoStatusResponse,
ResetFilteredVideoStatusRequest, UpdateVideoSourceRequest,
QrcodeGenerateResponse as GenerateQrcodeResponse, UpdateVideoSourceResponse,
QrcodePollResponse as PollQrcodeResponse UpdateVideoStatusRequest,
UpdateVideoStatusResponse,
UppersResponse,
VideoResponse,
VideoSourcesDetailsResponse,
VideoSourcesResponse,
VideosRequest,
VideosResponse
} from './types'; } from './types';
import { wsManager } from './ws'; import { wsManager } from './ws';
@@ -63,6 +63,10 @@ class ApiClient {
} }
} }
getAuthToken(): string | null {
return this.defaultHeaders['Authorization'] || localStorage.getItem('authToken');
}
// 清除认证 token // 清除认证 token
clearAuthToken() { clearAuthToken() {
delete this.defaultHeaders['Authorization']; delete this.defaultHeaders['Authorization'];
@@ -340,6 +344,7 @@ const api = {
apiClient.subscribeToTasks(onMessage), apiClient.subscribeToTasks(onMessage),
setAuthToken: (token: string) => apiClient.setAuthToken(token), setAuthToken: (token: string) => apiClient.setAuthToken(token),
getAuthToken: () => apiClient.getAuthToken(),
clearAuthToken: () => apiClient.clearAuthToken() clearAuthToken: () => apiClient.clearAuthToken()
}; };
+2 -1
View File
@@ -1,4 +1,5 @@
import { toast } from 'svelte-sonner'; import { toast } from 'svelte-sonner';
import api from './api';
import type { SysInfo, TaskStatus } from './types'; import type { SysInfo, TaskStatus } from './types';
// 支持的事件类型 // 支持的事件类型
@@ -61,7 +62,7 @@ export class WebSocketManager {
this.connectionPromise = new Promise((resolve, reject) => { this.connectionPromise = new Promise((resolve, reject) => {
this.connecting = true; this.connecting = true;
const token = localStorage.getItem('authToken') || ''; const token = api.getAuthToken() || '';
try { try {
const protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://'; const protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://';
+6 -11
View File
@@ -110,6 +110,7 @@
toast.error('加载配置失败', { toast.error('加载配置失败', {
description: (error as ApiError).message description: (error as ApiError).message
}); });
throw error;
} finally { } finally {
loading = false; loading = false;
} }
@@ -123,12 +124,13 @@
try { try {
api.setAuthToken(frontendToken.trim()); api.setAuthToken(frontendToken.trim());
localStorage.setItem('authToken', frontendToken.trim()); await loadConfig();
loadConfig();
toast.success('前端认证成功'); toast.success('前端认证成功');
} catch (error) { } catch (error) {
console.error('前端认证失败:', error); console.error('前端认证失败:', error);
toast.error('认证失败,请检查Token是否正确'); toast.error('认证失败,请检查Token是否正确', {
description: (error as ApiError).message
});
} }
} }
@@ -191,13 +193,7 @@
onMount(() => { onMount(() => {
setBreadcrumb([{ label: '设置' }]); setBreadcrumb([{ label: '设置' }]);
frontendToken = api.getAuthToken() || '';
const savedToken = localStorage.getItem('authToken');
if (savedToken) {
frontendToken = savedToken;
api.setAuthToken(savedToken);
}
loadConfig(); loadConfig();
}); });
</script> </script>
@@ -233,7 +229,6 @@
onclick={() => { onclick={() => {
formData = null; formData = null;
config = null; config = null;
localStorage.removeItem('authToken');
api.clearAuthToken(); api.clearAuthToken();
frontendToken = ''; frontendToken = '';
}} }}