Skip to content

Commit 010d489

Browse files
committed
fix(kb): auto-refresh documents after connector sync and remove redundant invalidations
1 parent 8906439 commit 010d489

File tree

4 files changed

+19
-27
lines changed

4 files changed

+19
-27
lines changed

apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/document.tsx

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import { startTransition, useCallback, useEffect, useMemo, useRef, useState } from 'react'
44
import { createLogger } from '@sim/logger'
5-
import { useQueryClient } from '@tanstack/react-query'
65
import { ChevronDown, ChevronUp, FileText, Pencil, Tag } from 'lucide-react'
76
import { useParams, useRouter, useSearchParams } from 'next/navigation'
87
import {
@@ -41,7 +40,6 @@ import { useUserPermissionsContext } from '@/app/workspace/[workspaceId]/provide
4140
import { useContextMenu } from '@/app/workspace/[workspaceId]/w/components/sidebar/hooks'
4241
import { useDocument, useDocumentChunks, useKnowledgeBase } from '@/hooks/kb/use-knowledge'
4342
import {
44-
knowledgeKeys,
4543
useBulkChunkOperation,
4644
useDeleteDocument,
4745
useDocumentChunkSearchQuery,
@@ -137,7 +135,6 @@ export function Document({
137135
knowledgeBaseName,
138136
documentName,
139137
}: DocumentProps) {
140-
const queryClient = useQueryClient()
141138
const { workspaceId } = useParams()
142139
const router = useRouter()
143140
const searchParams = useSearchParams()
@@ -704,9 +701,7 @@ export function Document({
704701
},
705702
{
706703
onSuccess: (result) => {
707-
if (operation === 'delete' || result.errorCount > 0) {
708-
refreshChunks()
709-
} else {
704+
if (operation !== 'delete' && result.errorCount === 0) {
710705
chunks.forEach((chunk) => {
711706
updateChunk(chunk.id, { enabled: operation === 'enable' })
712707
})
@@ -789,12 +784,6 @@ export function Document({
789784
setContextMenuChunk(null)
790785
}, [closeContextMenu])
791786

792-
const handleDocumentTagsUpdate = useCallback(() => {
793-
queryClient.invalidateQueries({
794-
queryKey: knowledgeKeys.document(knowledgeBaseId, documentId),
795-
})
796-
}, [knowledgeBaseId, documentId, queryClient])
797-
798787
const prevDocumentIdRef = useRef<string>(documentId)
799788
const isNavigatingToNewDoc = prevDocumentIdRef.current !== documentId
800789

@@ -1121,7 +1110,6 @@ export function Document({
11211110
knowledgeBaseId={knowledgeBaseId}
11221111
documentId={documentId}
11231112
documentData={documentData}
1124-
onDocumentUpdate={handleDocumentTagsUpdate}
11251113
/>
11261114

11271115
<DeleteChunkModal

apps/sim/app/workspace/[workspaceId]/knowledge/[id]/base.tsx

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,13 @@ export function KnowledgeBase({
271271
refresh: refreshKnowledgeBase,
272272
} = useKnowledgeBase(id)
273273

274+
const { data: connectors = [], isLoading: isLoadingConnectors } = useConnectorList(id)
275+
const hasSyncingConnectors = connectors.some((c) => c.status === 'syncing')
276+
const hasSyncingConnectorsRef = useRef(hasSyncingConnectors)
277+
useEffect(() => {
278+
hasSyncingConnectorsRef.current = hasSyncingConnectors
279+
}, [hasSyncingConnectors])
280+
274281
const {
275282
documents,
276283
pagination,
@@ -292,24 +299,24 @@ export function KnowledgeBase({
292299
const hasPending = data?.documents?.some(
293300
(doc) => doc.processingStatus === 'pending' || doc.processingStatus === 'processing'
294301
)
295-
return hasPending ? 3000 : false
302+
if (hasPending) return 3000
303+
if (hasSyncingConnectorsRef.current) return 5000
304+
return false
296305
},
297306
enabledFilter,
298307
tagFilters: activeTagFilters.length > 0 ? activeTagFilters : undefined,
299308
})
300309

301310
const { tagDefinitions } = useKnowledgeBaseTagDefinitions(id)
302311

303-
const { data: connectors = [], isLoading: isLoadingConnectors } = useConnectorList(id)
304-
const hasSyncingConnectors = connectors.some((c) => c.status === 'syncing')
305-
306312
const prevHadSyncingRef = useRef(false)
307313
useEffect(() => {
308314
if (prevHadSyncingRef.current && !hasSyncingConnectors) {
309315
refreshKnowledgeBase()
316+
refreshDocuments()
310317
}
311318
prevHadSyncingRef.current = hasSyncingConnectors
312-
}, [hasSyncingConnectors, refreshKnowledgeBase])
319+
}, [hasSyncingConnectors, refreshKnowledgeBase, refreshDocuments])
313320

314321
const router = useRouter()
315322

@@ -406,7 +413,6 @@ export function KnowledgeBase({
406413
},
407414
{
408415
onSuccess: () => {
409-
refreshDocuments()
410416
logger.info(`Document retry initiated successfully for: ${docId}`)
411417
},
412418
onError: (err) => {
@@ -480,7 +486,6 @@ export function KnowledgeBase({
480486
{ knowledgeBaseId: id, documentId: documentToDelete },
481487
{
482488
onSuccess: () => {
483-
refreshDocuments()
484489
setSelectedDocuments((prev) => {
485490
const newSet = new Set(prev)
486491
newSet.delete(documentToDelete)
@@ -575,7 +580,6 @@ export function KnowledgeBase({
575580
logger.info(`Successfully enabled ${result.successCount} documents`)
576581
setSelectedDocuments(new Set())
577582
setIsSelectAllMode(false)
578-
refreshDocuments()
579583
},
580584
}
581585
)
@@ -623,7 +627,6 @@ export function KnowledgeBase({
623627
logger.info(`Successfully disabled ${result.successCount} documents`)
624628
setSelectedDocuments(new Set())
625629
setIsSelectAllMode(false)
626-
refreshDocuments()
627630
},
628631
}
629632
)
@@ -671,7 +674,6 @@ export function KnowledgeBase({
671674
{
672675
onSuccess: (result) => {
673676
logger.info(`Successfully deleted ${result.successCount} documents`)
674-
refreshDocuments()
675677
setSelectedDocuments(new Set())
676678
setIsSelectAllMode(false)
677679
},
@@ -696,7 +698,6 @@ export function KnowledgeBase({
696698
{
697699
onSuccess: (result) => {
698700
logger.info(`Successfully deleted ${result.successCount} documents`)
699-
refreshDocuments()
700701
setSelectedDocuments(new Set())
701702
},
702703
onSettled: () => {

apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/base-tags-modal/base-tags-modal.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ interface BaseTagsModalProps {
9191
}
9292

9393
export function BaseTagsModal({ open, onOpenChange, knowledgeBaseId }: BaseTagsModalProps) {
94-
const { tagDefinitions: kbTagDefinitions, fetchTagDefinitions: refreshTagDefinitions } =
94+
const { tagDefinitions: kbTagDefinitions } =
9595
useKnowledgeBaseTagDefinitions(knowledgeBaseId)
9696

9797
const createTagMutation = useCreateTagDefinition()
@@ -219,7 +219,7 @@ export function BaseTagsModal({ open, onOpenChange, knowledgeBaseId }: BaseTagsM
219219
fieldType: createTagForm.fieldType,
220220
})
221221

222-
await Promise.all([refreshTagDefinitions(), fetchTagUsage()])
222+
await fetchTagUsage()
223223

224224
setCreateTagForm({
225225
displayName: '',
@@ -240,7 +240,7 @@ export function BaseTagsModal({ open, onOpenChange, knowledgeBaseId }: BaseTagsM
240240
tagDefinitionId: selectedTag.id,
241241
})
242242

243-
await Promise.all([refreshTagDefinitions(), fetchTagUsage()])
243+
await fetchTagUsage()
244244

245245
setDeleteTagDialogOpen(false)
246246
setSelectedTag(null)

apps/sim/hooks/queries/kb/connectors.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,9 @@ export function useCreateConnector() {
155155
queryClient.invalidateQueries({
156156
queryKey: connectorKeys.list(knowledgeBaseId),
157157
})
158+
queryClient.invalidateQueries({
159+
queryKey: knowledgeKeys.detail(knowledgeBaseId),
160+
})
158161
},
159162
})
160163
}

0 commit comments

Comments
 (0)