apps/meteor/client/views/invite/hooks/useInviteTokenMutation.ts
import { useEndpoint, useRouter, useToastMessageDispatch, useTranslation } from '@rocket.chat/ui-contexts';
import { useMutation } from '@tanstack/react-query';
export const useInviteTokenMutation = () => {
const t = useTranslation();
const router = useRouter();
const dispatchToastMessage = useToastMessageDispatch();
const getInviteRoom = useEndpoint('POST', '/v1/useInviteToken');
const { mutate } = useMutation({
mutationFn: (token: string) => getInviteRoom({ token }),
onSuccess: (result) => {
if (!result.room.name) {
dispatchToastMessage({ type: 'error', message: t('Failed_to_activate_invite_token') });
router.navigate('/home');
return;
}
if (result.room.t === 'p') {
router.navigate(`/group/${result.room.name}`);
return;
}
router.navigate(`/channel/${result.room.name}`);
},
onError: () => {
dispatchToastMessage({ type: 'error', message: t('Failed_to_activate_invite_token') });
router.navigate('/home');
},
});
return mutate;
};