import { useState } from 'react'; import { RefreshCw, Copy, Check } from 'lucide-react'; const UPDATER_ENDPOINT = 'https://github.com/yrippert-maker/papayu/releases/latest/download/latest.json'; const CHANNEL = 'stable'; export function Updates() { const [checkResult, setCheckResult] = useState<{ ok: boolean; message: string } | null>(null); const [isChecking, setIsChecking] = useState(false); const [logLines, setLogLines] = useState([]); const [copied, setCopied] = useState(false); const addLog = (line: string) => { setLogLines((prev) => [...prev, `${new Date().toISOString()} ${line}`]); }; const handleCheck = async () => { setIsChecking(true); setCheckResult(null); setLogLines([]); addLog('Запрос проверки обновлений…'); try { const { check } = await import('@tauri-apps/plugin-updater'); const { getVersion } = await import('@tauri-apps/api/app'); const currentVersion = await getVersion(); addLog(`Текущая версия: ${currentVersion}`); addLog(`Endpoint: ${UPDATER_ENDPOINT}`); addLog(`Канал: ${CHANNEL}`); const update = await check(); if (!update) { addLog('Обновлений нет.'); setCheckResult({ ok: true, message: 'Обновлений нет. У вас актуальная версия.' }); return; } addLog(`Доступна версия: ${update.version}`); setCheckResult({ ok: true, message: `Доступна версия ${update.version}. Нажмите «Установить» в шапке приложения.` }); } catch (e) { const msg = e instanceof Error ? e.message : String(e); addLog(`Ошибка: ${msg}`); const friendly = msg && (msg.includes('fetch') || msg.includes('valid') || msg.includes('signature')) ? 'Обновления пока недоступны (сервер или подпись не настроены).' : msg || 'Ошибка проверки обновлений.'; setCheckResult({ ok: false, message: friendly }); } finally { setIsChecking(false); } }; const copyLog = async () => { const text = logLines.join('\n') || 'Лог пуст.'; await navigator.clipboard.writeText(text); setCopied(true); setTimeout(() => setCopied(false), 2000); }; return (

Обновления

Endpoint: {UPDATER_ENDPOINT}

Канал: {CHANNEL}

{checkResult && (
{checkResult.message}
)} {logLines.length > 0 && (
Лог
              {logLines.join('\n')}
            
)}
); }