diff --git a/surfsense_web/atoms/documents/document-query.atoms.ts b/surfsense_web/atoms/documents/document-query.atoms.ts deleted file mode 100644 index 656706a62..000000000 --- a/surfsense_web/atoms/documents/document-query.atoms.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { atomWithQuery } from "jotai-tanstack-query"; -import { activeSearchSpaceIdAtom } from "@/atoms/search-spaces/search-space-query.atoms"; -import type { SearchDocumentsRequest } from "@/contracts/types/document.types"; -import { documentsApiService } from "@/lib/apis/documents-api.service"; -import { cacheKeys } from "@/lib/query-client/cache-keys"; -import { globalDocumentsQueryParamsAtom } from "./ui.atoms"; - -export const documentsAtom = atomWithQuery((get) => { - const searchSpaceId = get(activeSearchSpaceIdAtom); - const queryParams = get(globalDocumentsQueryParamsAtom); - - return { - queryKey: cacheKeys.documents.globalQueryParams(queryParams), - enabled: !!searchSpaceId, - queryFn: async () => { - return documentsApiService.getDocuments({ - queryParams: queryParams, - }); - }, - }; -}); - -export const documentTypeCountsAtom = atomWithQuery((get) => { - const searchSpaceId = get(activeSearchSpaceIdAtom); - - return { - queryKey: cacheKeys.documents.typeCounts(searchSpaceId ?? undefined), - enabled: !!searchSpaceId, - staleTime: 10 * 60 * 1000, // 10 minutes - queryFn: async () => { - return documentsApiService.getDocumentTypeCounts({ - queryParams: { - search_space_id: searchSpaceId ?? undefined, - }, - }); - }, - }; -}); diff --git a/surfsense_web/components/assistant-ui/connector-popup.tsx b/surfsense_web/components/assistant-ui/connector-popup.tsx index 3187d3c33..ae50ed7a4 100644 --- a/surfsense_web/components/assistant-ui/connector-popup.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup.tsx @@ -4,7 +4,7 @@ import { useAtomValue, useSetAtom } from "jotai"; import { AlertTriangle, Cable, Settings } from "lucide-react"; import { forwardRef, useEffect, useImperativeHandle, useMemo, useState } from "react"; import { createPortal } from "react-dom"; -import { documentTypeCountsAtom } from "@/atoms/documents/document-query.atoms"; +import { useZeroDocumentTypeCounts } from "@/hooks/use-zero-document-type-counts"; import { statusInboxItemsAtom } from "@/atoms/inbox/status-inbox.atom"; import { globalNewLLMConfigsAtom, @@ -72,9 +72,9 @@ export const ConnectorIndicator = forwardRef | undefined { + const numericId = searchSpaceId != null ? Number(searchSpaceId) : null; + + const [zeroDocuments] = useQuery( + queries.documents.bySpace({ searchSpaceId: numericId ?? -1 }) + ); + + return useMemo(() => { + if (!zeroDocuments || numericId == null) return undefined; + + const counts: Record = {}; + for (const doc of zeroDocuments) { + if (doc.id != null && doc.title != null && doc.title !== "") { + counts[doc.documentType] = (counts[doc.documentType] || 0) + 1; + } + } + return counts; + }, [zeroDocuments, numericId]); +}