apps/meteor/client/views/root/hooks/useMessageLinkClicks.ts
import { useAbsoluteUrl, useLayout } from '@rocket.chat/ui-contexts';
import { useEffect } from 'react';
import { fireGlobalEvent } from '../../../lib/utils/fireGlobalEvent';
export const useMessageLinkClicks = () => {
const absoluteUrl = useAbsoluteUrl();
const { isEmbedded: embeddedLayout } = useLayout();
useEffect(() => {
if (!embeddedLayout) {
return;
}
const handleMessageLinkClick = (event: Event) => {
const element = event.currentTarget as Element | null;
if (!element || !(element instanceof HTMLElement)) {
return;
}
if (!(element instanceof HTMLAnchorElement)) {
return;
}
if (element.origin !== absoluteUrl('').replace(/\/+$/, '') || !/msg=([a-zA-Z0-9]+)/.test(element.search)) {
return;
}
fireGlobalEvent('click-message-link', { link: element.pathname + element.search });
};
document.body.addEventListener('click', handleMessageLinkClick);
return () => {
document.body.removeEventListener('click', handleMessageLinkClick);
};
}, [absoluteUrl, embeddedLayout]);
};