import { ColumnDef } from '@tanstack/react-table'; import { Button } from '@/components/ui/button'; import { LoaderCircleIcon, MoreVerticalIcon } from 'lucide-react'; import type { ServerLog } from '@/types/server-log'; import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog'; import { ReactNode, useState } from 'react'; import axios from 'axios'; import DateTime from '@/components/date-time'; import LogOutput from '@/components/log-output'; import { useQuery } from '@tanstack/react-query'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'; import { useForm } from '@inertiajs/react'; import FormSuccessful from '@/components/form-successful'; function View({ serverLog }: { serverLog: ServerLog }) { const [open, setOpen] = useState(false); const query = useQuery({ queryKey: ['server-log', serverLog.id], queryFn: async () => { try { const response = await axios.get(route('logs.show', { server: serverLog.server_id, log: serverLog.id })); return response.data; } catch (error: unknown) { if (axios.isAxiosError(error)) { throw new Error(error.response?.data?.error || 'An error occurred while fetching the log'); } throw new Error('Unknown error occurred'); } }, enabled: open, retry: false, refetchInterval: (query) => { if (query.state.status === 'error') return false; return 2500; }, }); return ( e.preventDefault()}>View View Log This is all content of the log <> {query.isLoading && 'Loading...'} {query.isError && Error: {query.error.message}} {query.data && !query.isError && query.data} > Download ); } function Download({ serverLog, children }: { serverLog: ServerLog; children: ReactNode }) { return ( {children} ); } function Delete({ serverLog }: { serverLog: ServerLog }) { const [open, setOpen] = useState(false); const form = useForm(); const submit = () => { form.delete(route('logs.destroy', { server: serverLog.server_id, log: serverLog.id }), { onSuccess: () => { setOpen(false); }, }); }; return ( e.preventDefault()}> Delete Delete {serverLog.name} Delete log Are you sure you want to delete {serverLog.name}? Cancel {form.processing && } Delete ); } export const columns: ColumnDef[] = [ { accessorKey: 'name', header: 'Event', enableColumnFilter: true, }, { accessorKey: 'created_at', header: 'Created At', enableSorting: true, cell: ({ row }) => { return ; }, }, { id: 'actions', enableColumnFilter: false, enableSorting: false, cell: ({ row }) => { return ( Open menu Download ); }, }, ];
Are you sure you want to delete {serverLog.name}?