"use client"; import { FaExternalLinkAlt, FaTimes } from "react-icons/fa"; import { LuCheckCheck } from "react-icons/lu"; import { Button } from "@/components/ui/button"; import type { AppUpdateInfo } from "@/types"; import { RippleButton } from "./ui/ripple"; interface AppUpdateToastProps { updateInfo: AppUpdateInfo; onRestart: () => Promise; onDismiss: () => void; updateReady?: boolean; } export function AppUpdateToast({ updateInfo, onRestart, onDismiss, updateReady = false, }: AppUpdateToastProps) { const handleRestartClick = async () => { await onRestart(); }; const handleViewRelease = () => { if (updateInfo.release_page_url) { const event = new CustomEvent("url-open-request", { detail: updateInfo.release_page_url, }); window.dispatchEvent(event); } }; return (
{updateReady ? "Update ready, restart to apply" : "Manual download required"}
{updateInfo.current_version} → {updateInfo.new_version}
{updateReady ? ( void handleRestartClick()} size="sm" className="flex gap-2 items-center text-xs" > Restart Now ) : ( updateInfo.manual_update_required && ( View Release ) )} Later
); }