"use client"; import { Clock9 } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"; import { CronInput } from "@/features/database/cron-input"; import { Switch } from "@/components/ui/switch"; import { Label } from "@/components/ui/label"; import { Separator } from "@/components/ui/separator"; import { useState } from "react"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { useRouter } from "next/navigation"; import { toast } from "sonner"; import { updateDatabaseBackupPolicyAction } from "@/features/database/cron.action"; import {Database} from "@/db/schema/07_database"; export type CronButtonProps = { database: Database; }; export const CronButton = (props: CronButtonProps) => { const queryClient = useQueryClient(); const router = useRouter(); const [isSwitched, setIsSwitched] = useState(props.database.backupPolicy !== null); const [open, setOpen] = useState(false); const updateDatabaseBackupPolicy = useMutation({ mutationFn: (value: string) => updateDatabaseBackupPolicyAction({ databaseId: props.database.id, backupPolicy: value }), onSuccess: () => { toast.success(`Method updated successfully.`); queryClient.invalidateQueries({ queryKey: ["database-data", props.database.id] }); router.refresh(); }, onError: () => { toast.error(`An error occurred while updating backup method.`); }, }); const handleTypeChange = async (state: boolean) => { setIsSwitched(state); if (!state) { await updateDatabaseBackupPolicy.mutateAsync(""); } }; return ( Backup method Your settings for the backup method

Select your backup method

{ await handleTypeChange(!isSwitched); }} id="type-mode" />
{isSwitched ? ( { setOpen(false); }} /> ) : null}
); };