-
Martin Schoeler authored
Co-authored-by:
Tasso Evangelista <2263066+tassoevan@users.noreply.github.com>
Martin Schoeler authoredCo-authored-by:
Tasso Evangelista <2263066+tassoevan@users.noreply.github.com>
useUnpinMessageMutation.ts 1.23 KiB
import type { IMessage } from '@rocket.chat/core-typings';
import { useEndpoint, useToastMessageDispatch } from '@rocket.chat/ui-contexts';
import { useQueryClient, useMutation } from '@tanstack/react-query';
import { useTranslation } from 'react-i18next';
import { updatePinMessage } from '../../../lib/mutationEffects/updatePinMessage';
import { roomsQueryKeys } from '../../../lib/queryKeys';
export const useUnpinMessageMutation = () => {
const { t } = useTranslation();
const unpinMessage = useEndpoint('POST', '/v1/chat.unPinMessage');
const dispatchToastMessage = useToastMessageDispatch();
const queryClient = useQueryClient();
return useMutation({
mutationFn: async (message: IMessage) => unpinMessage({ messageId: message._id }),
onMutate: (message) => {
updatePinMessage(message, { pinned: false });
},
onSuccess: () => {
dispatchToastMessage({ type: 'success', message: t('Message_has_been_unpinned') });
},
onError: (error) => {
dispatchToastMessage({ type: 'error', message: error });
},
onSettled: (_data, _error, message) => {
queryClient.invalidateQueries(roomsQueryKeys.pinnedMessages(message.rid));
queryClient.invalidateQueries(roomsQueryKeys.messageActions(message.rid, message._id));
},
});
};