import { useState, useEffect } from 'react'; import { isElectron } from '../../platform/platform'; interface UpdateError { message: string; releaseUrl: string; } /** * Persistent toast shown when an Electron auto-update has been downloaded * or when auto-update fails (offers manual download link). * Renders nothing in browser environments. */ export function UpdateToast() { const [downloadedVersion, setDownloadedVersion] = useState(null); const [failedUpdate, setFailedUpdate] = useState(null); useEffect(() => { if (!isElectron() || !window.backspace) return; window.backspace.onUpdateDownloaded((info) => { setDownloadedVersion(info.version); // Auto-download succeeded — clear any previous error state setFailedUpdate(null); }); window.backspace.onUpdateError((error) => { setFailedUpdate(error); }); }, []); // Nothing to show if (!downloadedVersion && !failedUpdate) return null; // Auto-download succeeded — show restart toast if (downloadedVersion) { return (

Update ready

Version {downloadedVersion} has been downloaded

); } // Auto-download failed — show manual download toast return (

Update failed

Auto-update failed — download manually

Download
); }