mirror of
https://github.com/amtoaer/bili-sync.git
synced 2026-09-05 07:28:04 +08:00
fix: 修复一些前端的小问题 (#641)
This commit is contained in:
+28
-23
@@ -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
@@ -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://';
|
||||||
|
|||||||
@@ -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 = '';
|
||||||
}}
|
}}
|
||||||
|
|||||||
Reference in New Issue
Block a user