From f8c6bbdd975dda56963c12e0b8777d12aa3fae96 Mon Sep 17 00:00:00 2001 From: Sean Hatfield Date: Tue, 9 Dec 2025 16:57:58 -0800 Subject: [PATCH] Refactor WorkspaceFileRow component (#4740) * remove event listeners + useState on WorkspaceFileRow * reduce complexity for render --------- Co-authored-by: Timothy Carambat --- .../WorkspaceFileRow/index.jsx | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/frontend/src/components/Modals/ManageWorkspace/Documents/WorkspaceDirectory/WorkspaceFileRow/index.jsx b/frontend/src/components/Modals/ManageWorkspace/Documents/WorkspaceDirectory/WorkspaceFileRow/index.jsx index 7bc85d31..a141635d 100644 --- a/frontend/src/components/Modals/ManageWorkspace/Documents/WorkspaceDirectory/WorkspaceFileRow/index.jsx +++ b/frontend/src/components/Modals/ManageWorkspace/Documents/WorkspaceDirectory/WorkspaceFileRow/index.jsx @@ -124,7 +124,6 @@ const PinItemToWorkspace = memo(({ workspace, docPath, item }) => { const [pinned, setPinned] = useState( item?.pinnedWorkspaces?.includes(workspace.id) || false ); - const [hover, setHover] = useState(false); const pinEvent = new CustomEvent("pinned_document"); const updatePinStatus = async (e) => { @@ -162,21 +161,18 @@ const PinItemToWorkspace = memo(({ workspace, docPath, item }) => { return (
setHover(true)} - onMouseLeave={() => setHover(false)} onClick={updatePinStatus} - className="flex items-center ml-2 cursor-pointer" + className="group flex items-center ml-2 cursor-pointer" data-tooltip-id="pin-document" data-tooltip-content={ pinned ? "Un-pin from workspace" : "Pin to workspace" } > {pinned ? ( -
-

- {hover ? "Un-pin" : "Pinned"} +

+

+ Pinned + Un-pin

) : ( @@ -192,11 +188,11 @@ const PinItemToWorkspace = memo(({ workspace, docPath, item }) => { const WatchForChanges = memo(({ workspace, docPath, item }) => { const [watched, setWatched] = useState(item?.watched || false); - const [hover, setHover] = useState(false); const watchEvent = new CustomEvent("watch_document_for_changes"); - const updateWatchStatus = async () => { + const updateWatchStatus = async (e) => { try { + e.stopPropagation(); if (!watched) window.dispatchEvent(watchEvent); const success = await System.experimentalFeatures.liveSync.setWatchStatusForDocument( @@ -238,19 +234,23 @@ const WatchForChanges = memo(({ workspace, docPath, item }) => { return (
setHover(true)} - onMouseLeave={() => setHover(false)} - className="flex gap-x-2 items-center hover:bg-theme-file-picker-hover p-[2px] rounded ml-2" + className="group flex gap-x-2 items-center hover:bg-theme-file-picker-hover p-[2px] rounded ml-2 cursor-pointer" + onClick={updateWatchStatus} + data-tooltip-id="watch-changes" + data-active={watched} + data-tooltip-content={ + watched ? "Stop watching for changes" : "Watch document for changes" + } > +
);