export const useManager = <FormData extends FieldValues>(
router: keyof AppRouter["admin"],
dataMode: "create" | "edit"
) => {
const nextRouter = useRouter()
function getMutation(): UseTRPCMutationResult<FormData, any, any, any> {
if (dataMode === "create") {
// @ts-ignore
return trpc.admin[router].create.useMutation()
} else {
// @ts-ignore
return trpc.admin[router].edit.useMutation()
}
}
const mutation = getMutation()
async function submit(data: FormData) {
return await mutation.mutateAsync(data) as FormData
}
// @ts-ignore
const deleteMutation: UseTRPCMutationResult<FormData, any, any, any> = trpc.admin[router].delete.useMutation()
async function purge(slug: string) {
return await deleteMutation.mutateAsync({ slug })
}
const isLoading = mutation.isPending || deleteMutation.isPending
return { submit, isLoading, redirect: nextRouter.push, purge }
}
export const useManager = <FormData extends FieldValues>(
router: keyof AppRouter["admin"],
dataMode: "create" | "edit"
) => {
const nextRouter = useRouter()
function getMutation(): UseTRPCMutationResult<FormData, any, any, any> {
if (dataMode === "create") {
// @ts-ignore
return trpc.admin[router].create.useMutation()
} else {
// @ts-ignore
return trpc.admin[router].edit.useMutation()
}
}
const mutation = getMutation()
async function submit(data: FormData) {
return await mutation.mutateAsync(data) as FormData
}
// @ts-ignore
const deleteMutation: UseTRPCMutationResult<FormData, any, any, any> = trpc.admin[router].delete.useMutation()
async function purge(slug: string) {
return await deleteMutation.mutateAsync({ slug })
}
const isLoading = mutation.isPending || deleteMutation.isPending
return { submit, isLoading, redirect: nextRouter.push, purge }
}