Skip to content

Commit 9e2b822

Browse files
authored
🐛 Add confirmation modal for deleting DataMate knowledge bases and update UI for delete button in KnowledgeBaseList.
🐛 Add confirmation modal for deleting DataMate knowledge bases and update UI for delete button in KnowledgeBaseList.
2 parents cd32292 + 6084117 commit 9e2b822

5 files changed

Lines changed: 45 additions & 14 deletions

File tree

frontend/app/[locale]/knowledges/KnowledgeBaseConfiguration.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,6 +591,22 @@ function DataConfig({ isActive }: DataConfigProps) {
591591
// Handle knowledge base deletion
592592
const handleDelete = (id: string) => {
593593
hasUserInteractedRef.current = true; // Mark user interaction
594+
595+
// Find the knowledge base to check its source
596+
const kb = kbState.knowledgeBases.find((kb) => kb.id === id);
597+
598+
if (kb?.source === "datamate") {
599+
// Show informational message for DataMate knowledge bases
600+
Modal.info({
601+
title: t("knowledgeBase.modal.deleteDataMate.title", { name: kb.name }),
602+
content: t("knowledgeBase.modal.deleteDataMate.content"),
603+
okText: t("common.confirm"),
604+
centered: true,
605+
});
606+
return;
607+
}
608+
609+
// Normal delete confirmation for local knowledge bases
594610
confirm({
595611
title: t("knowledgeBase.modal.deleteConfirm.title"),
596612
content: t("knowledgeBase.modal.deleteConfirm.content"),

frontend/app/[locale]/knowledges/components/knowledge/KnowledgeBaseList.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -366,19 +366,19 @@ const KnowledgeBaseList: React.FC<KnowledgeBaseListProps> = ({
366366
})}
367367
</span>
368368

369-
{/* Only show source, creation date, and model tags when there are valid documents or chunks */}
369+
{/* Always show source tag regardless of document/chunk count */}
370+
<span
371+
className={`inline-flex items-center ${KB_LAYOUT.TAG_PADDING} ${KB_LAYOUT.TAG_ROUNDED} ${KB_LAYOUT.TAG_TEXT} bg-gray-200 text-gray-800 border border-gray-200 mr-1`}
372+
>
373+
{t("knowledgeBase.tag.source", {
374+
source: kb.source,
375+
})}
376+
</span>
377+
378+
{/* Only show creation date, model tags when there are valid documents or chunks */}
370379
{((kb.documentCount || 0) > 0 ||
371380
(kb.chunkCount || 0) > 0) && (
372381
<>
373-
{/* Knowledge base source tag */}
374-
<span
375-
className={`inline-flex items-center ${KB_LAYOUT.TAG_PADDING} ${KB_LAYOUT.TAG_ROUNDED} ${KB_LAYOUT.TAG_TEXT} bg-gray-200 text-gray-800 border border-gray-200 mr-1`}
376-
>
377-
{t("knowledgeBase.tag.source", {
378-
source: kb.source,
379-
})}
380-
</span>
381-
382382
{/* Creation date tag - only show date */}
383383
<span
384384
className={`inline-flex items-center ${KB_LAYOUT.TAG_PADDING} ${KB_LAYOUT.TAG_ROUNDED} ${KB_LAYOUT.TAG_TEXT} bg-gray-200 text-gray-800 border border-gray-200 mr-1`}

frontend/app/[locale]/knowledges/contexts/KnowledgeBaseContext.tsx

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,22 @@ export const KnowledgeBaseProvider: React.FC<KnowledgeBaseProviderProps> = ({
166166
if (!state.currentEmbeddingModel) {
167167
return false;
168168
}
169-
// DataMate knowledge bases are always selectable (even if model doesn't match)
169+
170+
// Check if knowledge base has content (documents or chunks)
171+
const hasContent =
172+
(kb.documentCount || 0) > 0 || (kb.chunkCount || 0) > 0;
173+
174+
// Empty knowledge bases cannot be selected
175+
if (!hasContent) {
176+
return false;
177+
}
178+
179+
// DataMate knowledge bases are selectable if they have content (even if model doesn't match)
170180
if (kb.source === "datamate") {
171181
return true;
172182
}
173-
// Only selectable when knowledge base model exactly matches current model
183+
184+
// For local knowledge bases, only selectable when model exactly matches current model
174185
return (
175186
kb.embeddingModel === "unknown" ||
176187
kb.embeddingModel === state.currentEmbeddingModel
@@ -433,8 +444,8 @@ export const KnowledgeBaseProvider: React.FC<KnowledgeBaseProviderProps> = ({
433444
const refreshKnowledgeBaseData = useCallback(
434445
async (forceRefresh = false) => {
435446
try {
436-
// Get latest knowledge base data directly from server, but don't reload user selections and skip DataMate sync
437-
await fetchKnowledgeBases(false, false, false);
447+
// Get latest knowledge base data directly from server, but don't reload user selections, include DataMate sync to prevent DataMate KBs from disappearing
448+
await fetchKnowledgeBases(false, false, true);
438449

439450
// If there is an active knowledge base, also refresh its document information
440451
if (state.activeKnowledgeBase) {

frontend/public/locales/en/common.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,8 @@
466466
"knowledgeBase.list.empty": "No knowledge bases yet, please create one first",
467467
"knowledgeBase.modal.deleteConfirm.title": "Confirm Delete Knowledge Base",
468468
"knowledgeBase.modal.deleteConfirm.content": "Are you sure you want to delete this knowledge base? This action cannot be undone.",
469+
"knowledgeBase.modal.deleteDataMate.title": "Cannot Delete DataMate Knowledge Base",
470+
"knowledgeBase.modal.deleteDataMate.content": "Nexent cannot delete DataMate knowledge bases. Please go to the DataMate page to perform the operation.",
469471
"knowledgeBase.message.deleteSuccess": "Knowledge base deleted successfully",
470472
"knowledgeBase.message.deleteError": "Failed to delete knowledge base",
471473
"knowledgeBase.message.syncSuccess": "Knowledge base synchronized successfully",

frontend/public/locales/zh/common.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,8 @@
467467
"knowledgeBase.list.empty": "暂无知识库,请先创建知识库",
468468
"knowledgeBase.modal.deleteConfirm.title": "确认删除知识库",
469469
"knowledgeBase.modal.deleteConfirm.content": "确定要删除这个知识库吗?删除后无法恢复。",
470+
"knowledgeBase.modal.deleteDataMate.title": "无法删除DataMate知识库",
471+
"knowledgeBase.modal.deleteDataMate.content": "Nexent无法删除DataMate知识库,请前往DataMate页面进行操作。",
470472
"knowledgeBase.message.deleteSuccess": "删除知识库成功",
471473
"knowledgeBase.message.deleteError": "删除知识库失败",
472474
"knowledgeBase.message.syncSuccess": "同步知识库成功",

0 commit comments

Comments
 (0)