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 ( -