'use client'; import { marked } from 'marked'; import { EmptyState } from '@/components/feedback/empty-state'; import { ErrorState } from '@/components/feedback/error-state'; import { LoadingState } from '@/components/feedback/loading-state'; import { AppCard } from '@/components/ui/app-card'; import { AppModal } from '@/components/ui/app-modal'; import { StatusBadge } from '@/components/ui/status-badge'; import type { LatestReleaseInfo } from '@/features/update/types'; import { PrimaryButton, SecondaryButton, } from '@/features/shared/components/resource-primitives'; import { formatDateTime, formatRelativeTime } from '@/lib/utils/date'; interface VersionUpgradeModalProps { isOpen: boolean; onClose: () => void; currentVersion: string; frontendVersion: string; startTime?: number; release: LatestReleaseInfo | null | undefined; isLoading: boolean; errorMessage?: string; canUpgrade: boolean; isChecking: boolean; isUpgrading: boolean; onRefresh: () => void; onUpgrade: () => void; } function getUpgradeBadge(release: LatestReleaseInfo | null | undefined) { if (!release) { return { label: '未检查', variant: 'info' as const }; } if (release.in_progress) { return { label: '升级中', variant: 'warning' as const }; } if (release.has_update) { return { label: '可升级', variant: 'warning' as const }; } return { label: '最新', variant: 'success' as const }; } export function VersionUpgradeModal({ isOpen, onClose, currentVersion, frontendVersion, startTime, release, isLoading, errorMessage, canUpgrade, isChecking, isUpgrading, onRefresh, onUpgrade, }: VersionUpgradeModalProps) { const upgradeBadge = getUpgradeBadge(release); return ( {isChecking ? '检查中...' : '检查更新'} {canUpgrade ? ( {isUpgrading ? '升级中...' : release?.in_progress ? '升级中...' : '立即升级'} ) : null} } >

{frontendVersion}

{currentVersion || 'unknown'}

{release?.tag_name || '未检查'}

{startTime ? formatDateTime(new Date(startTime * 1000)) : '未知'}

{isLoading ? : null} {!isLoading && errorMessage ? ( ) : null} {!isLoading && !errorMessage && !release ? ( ) : null} {!isLoading && !errorMessage && release ? (
{!release.upgrade_supported ? ( ) : null} {release.in_progress ? ( ) : null}
) : null}
); }