@@ -579,6 +579,8 @@ export default function ToolConfigModal({
579579 // Reset when currentAgentId changes (i.e., when switching agents)
580580 const hasTriggeredInitialRefetch = useRef ( false ) ;
581581 const prevAgentIdRef = useRef < number | undefined > ( undefined ) ;
582+ // Track if sync message has been shown when KB selector opens
583+ const hasShownSyncMessageRef = useRef ( false ) ;
582584
583585 // Reset refetch flag when switching agents and invalidate cache to force fresh fetch
584586 useEffect ( ( ) => {
@@ -624,6 +626,43 @@ export default function ToolConfigModal({
624626 difyConfig ,
625627 ] ) ;
626628
629+ // Show sync message when knowledge base selector modal opens
630+ // This provides immediate feedback on sync status to the user
631+ useEffect ( ( ) => {
632+ // Only trigger when KB selector opens and tool requires KB selection
633+ if ( kbSelectorVisible && toolRequiresKbSelection && ! hasShownSyncMessageRef . current ) {
634+ // Mark as shown to avoid duplicate messages
635+ hasShownSyncMessageRef . current = true ;
636+
637+ // Trigger sync and show message based on result
638+ refetchKnowledgeBases ( )
639+ . then ( ( result ) => {
640+ if ( result . isError || result . error ) {
641+ log . error ( "Failed to sync knowledge bases:" , result . error ) ;
642+ // Clear knowledge base list on sync failure
643+ clearKnowledgeBases ( ) ;
644+ message . error ( t ( "knowledgeBase.message.syncError" ) ) ;
645+ } else {
646+ // Show success message after sync completes
647+ message . success ( t ( "knowledgeBase.message.syncSuccess" ) ) ;
648+ }
649+ } )
650+ . catch ( ( error ) => {
651+ log . error ( "Failed to sync knowledge bases:" , error ) ;
652+ // Clear knowledge base list on sync failure
653+ clearKnowledgeBases ( ) ;
654+ message . error ( t ( "knowledgeBase.message.syncError" ) ) ;
655+ } ) ;
656+ }
657+ } , [ kbSelectorVisible , toolRequiresKbSelection , refetchKnowledgeBases , clearKnowledgeBases , t ] ) ;
658+
659+ // Reset sync message flag when KB selector closes
660+ useEffect ( ( ) => {
661+ if ( ! kbSelectorVisible ) {
662+ hasShownSyncMessageRef . current = false ;
663+ }
664+ } , [ kbSelectorVisible ] ) ;
665+
627666 // Watch all form values and sync to currentParams
628667 const formValues = Form . useWatch ( [ ] , form ) ;
629668 useEffect ( ( ) => {
0 commit comments