/** * UpdateNotification - компонент уведомления о доступном обновлении * Показывает информацию об обновлении и предоставляет действия для пользователя */ import { X } from "lucide-react" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { useUpdateManager } from "../hooks/use-update-manager" interface UpdateNotificationProps { className?: string onClose?: () => void showProgress?: boolean } /** * Компонент уведомления об обновлении */ export function UpdateNotification({ className, onClose, showProgress = true }: UpdateNotificationProps) { const { isUpdateAvailable, isDownloading, isReadyToInstall, isInstalling, isInstalled, isError, availableUpdate, error, progress, downloadUpdate, installUpdate, dismiss, retry, } = useUpdateManager() // Не показываем уведомление если нет обновления или произошла ошибка if (!isUpdateAvailable && !isDownloading && !isReadyToInstall && !isInstalling && !isInstalled && !isError) { return null } const handleClose = () => { dismiss() onClose?.() } const getTitle = () => { if (isError) return "Ошибка обновления" if (isInstalled) return "Обновление установлено" if (isInstalling) return "Установка обновления..." if (isReadyToInstall) return "Готово к установке" if (isDownloading) return "Загрузка обновления..." return "Доступно обновление" } const getDescription = () => { if (isError) return error || "Произошла ошибка при обновлении" if (isInstalled) return "Обновление успешно установлено. Перезапустите приложение для применения изменений." if (isInstalling) return "Пожалуйста, подождите..." if (isReadyToInstall) return "Обновление загружено и готово к установке" if (isDownloading) return "Загружается новая версия приложения" if (availableUpdate) { return `Версия ${availableUpdate.version} готова к загрузке` } return "Новая версия приложения готова к загрузке" } const getActionButtons = () => { if (isError) { return (