import { useQueryClient, useMutation } from "@tanstack/react-query"; import { deleteStorage, updateStorage } from "../utils/uxFncs"; import { useForm } from "@tanstack/react-form"; import { useStore } from "@tanstack/react-store"; import { Input, Button } from "@mui/joy"; import type { Storage } from "../misc/interfaces"; import { formatDate } from "../utils/uxFncs"; interface StorageRowProps { storage: Storage; } export const StorageRow = ({ storage }: StorageRowProps) => { const queryClient = useQueryClient(); const mutation = useMutation({ mutationFn: (values: Pick) => updateStorage(storage.uuid, values), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["storages"] }); }, }); const deleteMutation = useMutation({ mutationFn: (uuid: string) => deleteStorage(uuid), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["storages"] }); }, }); const form = useForm({ defaultValues: { name: storage.name, description: storage.description ?? "", }, onSubmit: async ({ value }) => { await mutation.mutateAsync(value); }, }); const values = useStore(form.baseStore, (state) => state.values); const isDirty = values.name !== storage.name || (values.description ?? "") !== (storage.description ?? ""); return ( {(field) => ( field.handleChange(e.target.value)} onBlur={field.handleBlur} size="sm" variant="outlined" className="rounded-xl bg-white/90 shadow-[0_8px_18px_rgba(15,23,42,0.06)]" /> )} {(field) => ( field.handleChange(e.target.value)} onBlur={field.handleBlur} size="sm" variant="outlined" className="rounded-xl bg-white/90 shadow-[0_8px_18px_rgba(15,23,42,0.06)]" /> )} {formatDate(storage.created_at)} {formatDate(storage.updated_at)}
); };