fix: localize home and split auth setup flow
This commit is contained in:
+20
-16
@@ -1,4 +1,4 @@
|
||||
import { redirectToLogin } from './auth-client.js';
|
||||
import { redirectToLogin, redirectToSetup } from './auth-client.js';
|
||||
|
||||
export function escapeHtml(value) {
|
||||
return String(value)
|
||||
@@ -37,7 +37,11 @@ export async function fetchJson(url, options = {}) {
|
||||
|
||||
if (!response.ok) {
|
||||
if (response.status === 401 && window.location.pathname !== '/login.html') {
|
||||
redirectToLogin();
|
||||
if (payload.error?.code === 'AUTH_SETUP_REQUIRED') {
|
||||
redirectToSetup();
|
||||
} else {
|
||||
redirectToLogin();
|
||||
}
|
||||
}
|
||||
|
||||
throw new Error(`${payload.error?.code ?? 'REQUEST_FAILED'}: ${payload.error?.message ?? 'Request failed.'}`);
|
||||
@@ -87,15 +91,15 @@ export function linkToFile(sourceId, fileId) {
|
||||
export function inferEnhancementLabel(source) {
|
||||
switch (source?.enhancement?.status) {
|
||||
case 'ready':
|
||||
return 'Enhanced';
|
||||
return '已增强';
|
||||
case 'running':
|
||||
return 'Running';
|
||||
return '增强中';
|
||||
case 'queued':
|
||||
return 'Queued';
|
||||
return '排队中';
|
||||
case 'failed':
|
||||
return 'Failed';
|
||||
return '增强失败';
|
||||
default:
|
||||
return 'Not ready';
|
||||
return '未增强';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,7 +120,7 @@ export function inferEnhancementClass(source) {
|
||||
export function renderSourceSummaryCard(source, extraActionsHtml = '') {
|
||||
const title = escapeHtml(source.displayName || source.originalFilename);
|
||||
const originalFilename = escapeHtml(source.originalFilename);
|
||||
const matchedHint = source.matchedBackupName ? 'Task name resolved from Server DB' : 'Task name not mapped yet';
|
||||
const matchedHint = source.matchedBackupName ? '任务名来自 Server DB' : '尚未匹配任务名';
|
||||
const progress =
|
||||
source.enhancement.totalVolumes > 0
|
||||
? `${source.enhancement.processedVolumes}/${source.enhancement.totalVolumes}`
|
||||
@@ -127,8 +131,8 @@ export function renderSourceSummaryCard(source, extraActionsHtml = '') {
|
||||
<div class="source-main">
|
||||
<div>
|
||||
<p class="source-name">${title}</p>
|
||||
<p class="source-meta">Database file: ${originalFilename}</p>
|
||||
<p class="source-meta">Source ID: ${escapeHtml(source.id)}</p>
|
||||
<p class="source-meta">数据库文件:${originalFilename}</p>
|
||||
<p class="source-meta">Source ID:${escapeHtml(source.id)}</p>
|
||||
</div>
|
||||
<span class="status-pill ${inferEnhancementClass(source)}">${inferEnhancementLabel(source)}</span>
|
||||
</div>
|
||||
@@ -137,19 +141,19 @@ export function renderSourceSummaryCard(source, extraActionsHtml = '') {
|
||||
|
||||
<div class="card-grid">
|
||||
<div class="stat">
|
||||
<span>Uploaded size</span>
|
||||
<span>上传大小</span>
|
||||
<strong>${formatBytes(source.fileSize)}</strong>
|
||||
</div>
|
||||
<div class="stat">
|
||||
<span>Latest snapshot</span>
|
||||
<strong>${escapeHtml(source.latestSnapshot?.timestamp ?? 'None')}</strong>
|
||||
<span>最新快照</span>
|
||||
<strong>${escapeHtml(source.latestSnapshot?.timestamp ?? '无')}</strong>
|
||||
</div>
|
||||
<div class="stat">
|
||||
<span>Browse</span>
|
||||
<strong>${source.canBrowse ? 'Available' : 'Unavailable'}</strong>
|
||||
<span>目录浏览</span>
|
||||
<strong>${source.canBrowse ? '可用' : '不可用'}</strong>
|
||||
</div>
|
||||
<div class="stat">
|
||||
<span>Enhancement</span>
|
||||
<span>增强进度</span>
|
||||
<strong>${escapeHtml(progress)}</strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user