import { useBackendUpdater } from '@/hooks/useBackendUpdater' import { IconDownload } from '@tabler/icons-react' import { Button } from '@/components/ui/button' import { useState, useEffect } from 'react' import { cn } from '@/lib/utils' import { useTranslation } from '@/i18n/react-i18next-compat' import { toast } from 'sonner' const BackendUpdater = () => { const { t } = useTranslation() const { updateState, updateBackend, checkForUpdate, setRemindMeLater } = useBackendUpdater() const handleUpdate = async () => { try { await updateBackend() setRemindMeLater(true) toast.success(t('settings:backendUpdater.updateSuccess')) } catch (error) { console.error('Backend update failed:', error) toast.error(t('settings:backendUpdater.updateError')) } } // Check for updates when component mounts useEffect(() => { checkForUpdate() }, [checkForUpdate]) const [backendUpdateState, setBackendUpdateState] = useState({ remindMeLater: false, isUpdateAvailable: false, }) useEffect(() => { setBackendUpdateState({ remindMeLater: updateState.remindMeLater, isUpdateAvailable: updateState.isUpdateAvailable, }) }, [updateState]) // Don't show if user clicked remind me later if (backendUpdateState.remindMeLater) { console.log('BackendUpdater: Not showing notification due to:', { remindMeLater: backendUpdateState.remindMeLater, }) return null } return ( <> {backendUpdateState.isUpdateAvailable && (
{t('settings:backendUpdater.newBackendVersion', { version: updateState.updateInfo?.newVersion, })}
{t('settings:backendUpdater.backendUpdateAvailable')}
)} ) } export default BackendUpdater