import { useState } from "react"; import { useTranslation } from "react-i18next"; import { authenticatedFetch } from "../../utils/api"; import { ReleaseInfo } from "../../types/sharedTypes"; interface VersionUpgradeModalProps { isOpen: boolean; onClose: () => void; releaseInfo: ReleaseInfo | null; currentVersion: string; latestVersion: string | null; } export default function VersionUpgradeModal({ isOpen, onClose, releaseInfo, currentVersion, latestVersion }: VersionUpgradeModalProps) { const { t } = useTranslation('common'); const [isUpdating, setIsUpdating] = useState(false); const [updateOutput, setUpdateOutput] = useState(''); const [updateError, setUpdateError] = useState(''); if (!isOpen) return null; const handleUpdateNow = async () => { setIsUpdating(true); setUpdateOutput('Starting update...\n'); setUpdateError(''); try { // Call the backend API to run the update command const response = await authenticatedFetch('/api/system/update', { method: 'POST', }); const data = await response.json(); if (response.ok) { setUpdateOutput(prev => prev + data.output + '\n'); setUpdateOutput(prev => prev + '\n✅ Update completed successfully!\n'); setUpdateOutput(prev => prev + 'Please restart the server to apply changes.\n'); } else { setUpdateError(data.error || 'Update failed'); setUpdateOutput(prev => prev + '\n❌ Update failed: ' + (data.error || 'Unknown error') + '\n'); } } catch (error: any) { setUpdateError(error.message); setUpdateOutput(prev => prev + '\n❌ Update failed: ' + error.message + '\n'); } finally { setIsUpdating(false); } }; return (
{releaseInfo?.title || t('versionUpdate.newVersionReady')}
{updateOutput}
git checkout main && git pull && npm install
{t('versionUpdate.manualUpgradeHint')}