import { useQuery } from "@tanstack/react-query"; import { CalendarClock, Database, HardDrive, Plus } from "lucide-react"; import { Link } from "react-router"; import { listBackupSchedules } from "~/api-client"; import { listBackupSchedulesOptions } from "~/api-client/@tanstack/react-query.gen"; import { BackupStatusDot } from "../components/backup-status-dot"; import { EmptyState } from "~/components/empty-state"; import { Button } from "~/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "~/components/ui/card"; import type { Route } from "./+types/backups"; export function meta(_: Route.MetaArgs) { return [ { title: "Ironmount" }, { name: "description", content: "Create, manage, monitor, and automate your Docker volumes with ease.", }, ]; } export const clientLoader = async () => { const jobs = await listBackupSchedules(); if (jobs.data) return jobs.data; return []; }; export default function Backups({ loaderData }: Route.ComponentProps) { const { data: schedules, isLoading } = useQuery({ ...listBackupSchedulesOptions(), initialData: loaderData, refetchInterval: 10000, refetchOnWindowFocus: true, }); if (isLoading) { return (
Loading backup schedules...
{schedule.cronExpression}