From 88a43cdd65926fc746e04e93151f734e2fade783 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sun, 17 May 2026 16:46:34 +0530 Subject: [PATCH] refactor: enhance ConnectToolsBanner functionality and update sidebar navigation handling --- .../components/assistant-ui/thread.tsx | 144 ++++++++++-------- .../layout/ui/sidebar/MobileSidebar.tsx | 1 + .../components/layout/ui/sidebar/Sidebar.tsx | 15 +- 3 files changed, 94 insertions(+), 66 deletions(-) diff --git a/surfsense_web/components/assistant-ui/thread.tsx b/surfsense_web/components/assistant-ui/thread.tsx index a3709911a..60c4a4d25 100644 --- a/surfsense_web/components/assistant-ui/thread.tsx +++ b/surfsense_web/components/assistant-ui/thread.tsx @@ -261,7 +261,10 @@ const BANNER_CONNECTORS = [ const BANNER_DISMISSED_KEY = "surfsense-connect-tools-banner-dismissed"; -const ConnectToolsBanner: FC<{ isThreadEmpty: boolean }> = ({ isThreadEmpty }) => { +const ConnectToolsBanner: FC<{ + isThreadEmpty: boolean; + onVisibleChange?: (visible: boolean) => void; +}> = ({ isThreadEmpty, onVisibleChange }) => { const { data: connectors } = useAtomValue(connectorsAtom); const setConnectorDialogOpen = useSetAtom(connectorDialogOpenAtom); const [dismissed, setDismissed] = useState(() => { @@ -270,8 +273,13 @@ const ConnectToolsBanner: FC<{ isThreadEmpty: boolean }> = ({ isThreadEmpty }) = }); const hasConnectors = (connectors?.length ?? 0) > 0; + const isVisible = !dismissed && !hasConnectors && isThreadEmpty; - if (dismissed || hasConnectors || !isThreadEmpty) return null; + useEffect(() => { + onVisibleChange?.(isVisible); + }, [isVisible, onVisibleChange]); + + if (!isVisible) return null; const handleDismiss = (e: React.MouseEvent) => { e.stopPropagation(); @@ -280,42 +288,41 @@ const ConnectToolsBanner: FC<{ isThreadEmpty: boolean }> = ({ isThreadEmpty }) = }; return ( -