import { env } from "@/config"; import { useQuery } from "@tanstack/react-query"; import { CircleX, LoaderCircle, RefreshCcw } from "lucide-react"; import type React from "react"; import { useTranslation } from "react-i18next"; import { Button } from "./ui/button"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./ui/tooltip"; type VersionInfo = { currentVersion: string; latestVersion: string; hasUpdate: boolean; }; const VersionBadge: React.FC = () => { const { isPending, data, isError } = useQuery({ queryKey: ["version"], queryFn: async () => { const response = await fetch(`${env.API_URL}/version`); if (response.ok) { return await response.json(); } return "unknown"; }, }); const inProduction = env.MODE === "production"; const { t } = useTranslation(); const version = data?.currentVersion === "dev" ? data?.currentVersion : `v${data?.currentVersion}`; return (
{isPending && ( )} {isError && ( )} {data?.hasUpdate && inProduction && (

{t("version.updateAvailableTooltip", { currentVersion: data.currentVersion, latestVersion: data.latestVersion, })}

)} {data && (!data.hasUpdate || !inProduction) && ( )}
); }; export default VersionBadge;