diff --git a/.changeset/add_better_misc_data_styling.md b/.changeset/add_better_misc_data_styling.md new file mode 100644 index 000000000..70e10a2bb --- /dev/null +++ b/.changeset/add_better_misc_data_styling.md @@ -0,0 +1,5 @@ +--- +default: fix +--- + +Fix spam-clicking abbreviations crashing sable diff --git a/src/app/components/message/RenderBody.tsx b/src/app/components/message/RenderBody.tsx index fe73afe5b..8b83dff99 100644 --- a/src/app/components/message/RenderBody.tsx +++ b/src/app/components/message/RenderBody.tsx @@ -77,8 +77,9 @@ function AbbreviationTerm({ text, definition }: AbbreviationTermProps) { const [anchor, setAnchor] = useState(); const handleClick: MouseEventHandler = (e) => { + if (e.currentTarget === null) return; e.stopPropagation(); - setAnchor((prev) => (prev ? undefined : e.currentTarget.getBoundingClientRect())); + setAnchor((prev) => (prev ? undefined : e.currentTarget?.getBoundingClientRect())); }; // On mobile, tapping an abbreviation pins the tooltip open. diff --git a/src/app/features/room/ThreadDrawer.tsx b/src/app/features/room/ThreadDrawer.tsx index 135c958a9..267e26b80 100644 --- a/src/app/features/room/ThreadDrawer.tsx +++ b/src/app/features/room/ThreadDrawer.tsx @@ -494,6 +494,7 @@ export function ThreadDrawer({ room, threadRootId, onClose, overlay }: ThreadDra const handleUserClick: MouseEventHandler = useCallback( (evt) => { + if (!evt.currentTarget) return; evt.preventDefault(); evt.stopPropagation(); const userId = evt.currentTarget.getAttribute('data-user-id');