import { useMutation, useQueryClient } from '@tanstack/react-query'; import { z } from 'zod'; import { api } from '@/lib/api-client'; import { MutationConfig } from '@/lib/react-query'; import { Discussion } from '@/types/api'; import { getDiscussionQueryOptions } from './get-discussion'; export const updateDiscussionInputSchema = z.object({ title: z.string().min(1, 'Required'), body: z.string().min(1, 'Required'), }); export type UpdateDiscussionInput = z.infer; export const updateDiscussion = ({ data, discussionId, }: { data: UpdateDiscussionInput; discussionId: string; }): Promise => { return api.patch(`/discussions/${discussionId}`, data); }; type UseUpdateDiscussionOptions = { mutationConfig?: MutationConfig; }; export const useUpdateDiscussion = ({ mutationConfig, }: UseUpdateDiscussionOptions = {}) => { const queryClient = useQueryClient(); const { onSuccess, ...restConfig } = mutationConfig || {}; return useMutation({ onSuccess: (data, ...args) => { queryClient.refetchQueries({ queryKey: getDiscussionQueryOptions(data.id).queryKey, }); onSuccess?.(data, ...args); }, ...restConfig, mutationFn: updateDiscussion, }); };