import { useMutation } from '@tanstack/react-query' import { throwResponseError } from '../utils/response_error' import { useApiClient } from './use_api_client' import { useCurrentPerson, useCurrentPersonCache } from './use_current_person' export function usePersonSettings() { const apiClient = useApiClient() const person = useCurrentPerson() const { update, invalidate } = useCurrentPersonCache() const directMessagesDisabled = person?.directMessagesDisabled ?? false const { mutate: setDirectMessagesDisabled, isPending: isMutating } = useMutation({ mutationFn: (disabled: boolean) => { const action = disabled ? 'disable_direct_messages' : 'enable_direct_messages' return apiClient.chat .post({ url: `/me/${action}`, data: { data: { type: 'Person', attributes: {} } } }) .catch(throwResponseError) }, onMutate: disabled => { update({ directMessagesDisabled: disabled }) }, onError: () => { invalidate() }, }) return { directMessagesDisabled, setDirectMessagesDisabled, isMutating } }