import { Plus, RefreshCcw } from "lucide-react"; import type { GetServerSideProps } from "next"; import { useState } from "react"; import toast from "react-hot-toast"; import { AreaRiservataLayout } from "~/components/Layout"; import { LoadingPage } from "~/components/loading"; import { Status500 } from "~/components/status-page"; import { StringheTable } from "~/components/tables/stringhe-table"; import { Button } from "~/components/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, } from "~/components/ui/dialog"; import { FormStringhe } from "~/forms/FormStringhe"; import type { NextPageWithLayout } from "~/pages/_app"; import type { TestiEStringhe } from "~/schemas/public/TestiEStringhe"; import { TrpcAuthedFetchingIstance } from "~/server/utils/ssgHelper"; import { api } from "~/utils/api"; const AdminTestiStringhe: NextPageWithLayout = () => { const { data, isLoading, refetch } = api.settings.getStringhe.useQuery(); const [openEdit, setOpenEdit] = useState(false); const [editData, setEditData] = useState(null); const handleOpen = (status: boolean) => { setOpenEdit(status); }; const handleEdit = (data: TestiEStringhe | null) => { setEditData(data); }; if (isLoading) return ; if (!data) return ; return (

Testi e Stringhe

); }; export const getServerSideProps = (async (context) => { const access_token = context.req.cookies.access_token; const helpers = await TrpcAuthedFetchingIstance({ access_token }); if (helpers) { await helpers.trpc.settings.getStringhe.prefetch(); return { props: { trpcState: helpers.trpc.dehydrate(), }, }; } return { props: {}, }; }) satisfies GetServerSideProps; export default AdminTestiStringhe; AdminTestiStringhe.getLayout = function getLayout(page) { return {page}; }; const EditModal = ({ initial, open, setOpen, }: { initial: TestiEStringhe | null; open: boolean; setOpen: (status: boolean) => void; }) => { const utils = api.useUtils(); const { mutate: edit } = api.settings.updateStringa.useMutation({ onError: (error) => { toast.error(error.message); }, onSuccess: async () => { toast.success("Successo"); await utils.settings.getStringhe.invalidate(); setOpen(false); }, }); const { mutate: add } = api.settings.newStringa.useMutation({ onError: (error) => { toast.error(error.message); }, onSuccess: async () => { toast.success("Successo"); await utils.settings.getStringhe.invalidate(); setOpen(false); }, }); const { mutate: del } = api.settings.deleteStringa.useMutation({ onError: (error) => { toast.error(error.message); }, onSuccess: async () => { toast.success("Successo"); await utils.settings.getStringhe.invalidate(); setOpen(false); }, }); return ( {!initial ? "Aggiungi Banner" : "Modifica Valori"} Edit {!initial ? (
{ add({ stringaId: fields.stinga_id, stringaValue: fields.stringa_value, }); }} />
) : (
del({ stringaId: v })} initialValues={{ ...initial, }} submitMutation={(fields) => { edit({ stringaId: fields.stinga_id, stringaValue: fields.stringa_value, }); }} />
)}
); };