Files
ncd-fe/packages/pl-fe/src/api/hooks/settings/useInteractionPolicies.ts
marcin mikołajczak 905e1626a4 pl-fe: wip valibot migration
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
2024-10-16 17:30:05 +02:00

43 lines
1.2 KiB
TypeScript

import { useMutation, useQuery } from '@tanstack/react-query';
import { type InteractionPolicies, interactionPoliciesSchema } from 'pl-api';
import * as v from 'valibot';
import { useClient, useFeatures, useLoggedIn } from 'pl-fe/hooks';
import { queryClient } from 'pl-fe/queries/client';
const emptySchema = v.parse(interactionPoliciesSchema, {});
const useInteractionPolicies = () => {
const client = useClient();
const { isLoggedIn } = useLoggedIn();
const features = useFeatures();
const { data, ...result } = useQuery({
queryKey: ['interactionPolicies'],
queryFn: client.settings.getInteractionPolicies,
placeholderData: emptySchema,
enabled: isLoggedIn && features.interactionRequests,
});
const {
mutate: updateInteractionPolicies,
isPending: isUpdating,
} = useMutation({
mutationFn: (policy: InteractionPolicies) =>
client.settings.updateInteractionPolicies(policy),
retry: false,
onSuccess: (policy) => {
queryClient.setQueryData(['interactionPolicies'], policy);
},
});
return {
interactionPolicies: data || emptySchema,
updateInteractionPolicies,
isUpdating,
...result,
};
};
export { useInteractionPolicies };