import { Server } from '@/types/server'; import React, { FormEvent, ReactNode, useState } from 'react'; import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger } from '@/components/ui/sheet'; import { Form, FormField, FormFields } from '@/components/ui/form'; import { useForm, usePage } from '@inertiajs/react'; import { Button } from '@/components/ui/button'; import { LoaderCircle, WifiIcon } from 'lucide-react'; import { Label } from '@/components/ui/label'; import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Database } from '@/types/database'; import axios from 'axios'; import InputError from '@/components/ui/input-error'; import { StorageProvider } from '@/types/storage-provider'; import ConnectStorageProvider from '@/pages/storage-providers/components/connect-storage-provider'; import { SharedData } from '@/types'; import { Input } from '@/components/ui/input'; export default function CreateBackup({ server, children }: { server: Server; children: ReactNode }) { const [open, setOpen] = useState(false); const [databases, setDatabases] = useState([]); const [storageProviders, setStorageProviders] = useState([]); const page = usePage(); const form = useForm<{ database: string; storage: string; interval: string; custom_interval: string; keep: string; }>({ database: '', storage: '', interval: 'daily', custom_interval: '', keep: '10', }); const submit = (e: FormEvent) => { e.preventDefault(); form.post(route('database-backups.store', { server: server.id }), { onSuccess: () => { setOpen(false); }, }); }; const onOpenChange = (open: boolean) => { setOpen(open); if (open) { fetchDatabases(); fetchStorageProviders(); } }; const fetchDatabases = () => { axios.get(route('databases.json', { server: server.id })).then((response) => { setDatabases(response.data); }); }; const fetchStorageProviders = () => { axios.get(route('storage-providers.json')).then((response) => { setStorageProviders(response.data); }); }; return ( {children} Create backup Create a new backup
{/*database*/} {/*storage*/}
fetchStorageProviders()}>
{/*interval*/} {/*custom interval*/} {form.data.interval === 'custom' && ( form.setData('custom_interval', e.target.value)} placeholder="* * * * *" /> )} {/*backups to keep*/} form.setData('keep', e.target.value)} />
); }