Skip to content

Commit 2d7ba91

Browse files
fix(workspace-selector-kb): fix selector for assigning workspaces for kbs (#1567)
1 parent 872e034 commit 2d7ba91

File tree

6 files changed

+31
-4
lines changed

6 files changed

+31
-4
lines changed

apps/sim/app/api/knowledge/[id]/route.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ describe('Knowledge Base By ID API Route', () => {
234234
{
235235
name: validUpdateData.name,
236236
description: validUpdateData.description,
237+
workspaceId: undefined,
237238
chunkingConfig: undefined,
238239
},
239240
expect.any(String)

apps/sim/app/api/knowledge/[id]/route.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ export async function PUT(req: NextRequest, { params }: { params: Promise<{ id:
103103
{
104104
name: validatedData.name,
105105
description: validatedData.description,
106+
workspaceId: validatedData.workspaceId,
106107
chunkingConfig: validatedData.chunkingConfig,
107108
},
108109
requestId

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -698,10 +698,6 @@ export function KnowledgeBase({
698698
options={{
699699
knowledgeBaseId: id,
700700
currentWorkspaceId: knowledgeBase?.workspaceId || null,
701-
onWorkspaceChange: () => {
702-
// Refresh the page to reflect the workspace change
703-
window.location.reload()
704-
},
705701
onDeleteKnowledgeBase: () => setShowDeleteDialog(true),
706702
}}
707703
/>

apps/sim/app/workspace/[workspaceId]/knowledge/components/workspace-selector/workspace-selector.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
} from '@/components/ui/dropdown-menu'
1212
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'
1313
import { createLogger } from '@/lib/logs/console/logger'
14+
import { useKnowledgeStore } from '@/stores/knowledge/store'
1415

1516
const logger = createLogger('WorkspaceSelector')
1617

@@ -33,6 +34,7 @@ export function WorkspaceSelector({
3334
onWorkspaceChange,
3435
disabled = false,
3536
}: WorkspaceSelectorProps) {
37+
const { updateKnowledgeBase } = useKnowledgeStore()
3638
const [workspaces, setWorkspaces] = useState<Workspace[]>([])
3739
const [isLoading, setIsLoading] = useState(false)
3840
const [isUpdating, setIsUpdating] = useState(false)
@@ -95,6 +97,11 @@ export function WorkspaceSelector({
9597

9698
if (result.success) {
9799
logger.info(`Knowledge base workspace updated: ${knowledgeBaseId} -> ${workspaceId}`)
100+
101+
// Update the store immediately to reflect the change without page reload
102+
updateKnowledgeBase(knowledgeBaseId, { workspaceId: workspaceId || undefined })
103+
104+
// Notify parent component of the change
98105
onWorkspaceChange?.(workspaceId)
99106
} else {
100107
throw new Error(result.error || 'Failed to update workspace')

apps/sim/lib/knowledge/service.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ export async function updateKnowledgeBase(
135135
updates: {
136136
name?: string
137137
description?: string
138+
workspaceId?: string | null
138139
chunkingConfig?: {
139140
maxSize: number
140141
minSize: number
@@ -148,6 +149,7 @@ export async function updateKnowledgeBase(
148149
updatedAt: Date
149150
name?: string
150151
description?: string | null
152+
workspaceId?: string | null
151153
chunkingConfig?: {
152154
maxSize: number
153155
minSize: number
@@ -161,6 +163,7 @@ export async function updateKnowledgeBase(
161163

162164
if (updates.name !== undefined) updateData.name = updates.name
163165
if (updates.description !== undefined) updateData.description = updates.description
166+
if (updates.workspaceId !== undefined) updateData.workspaceId = updates.workspaceId
164167
if (updates.chunkingConfig !== undefined) {
165168
updateData.chunkingConfig = updates.chunkingConfig
166169
updateData.embeddingModel = 'text-embedding-3-small'

apps/sim/stores/knowledge/store.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ interface KnowledgeStore {
159159
updateChunk: (documentId: string, chunkId: string, updates: Partial<ChunkData>) => void
160160
addPendingDocuments: (knowledgeBaseId: string, documents: DocumentData[]) => void
161161
addKnowledgeBase: (knowledgeBase: KnowledgeBaseData) => void
162+
updateKnowledgeBase: (id: string, updates: Partial<KnowledgeBaseData>) => void
162163
removeKnowledgeBase: (id: string) => void
163164
removeDocument: (knowledgeBaseId: string, documentId: string) => void
164165
clearDocuments: (knowledgeBaseId: string) => void
@@ -796,6 +797,24 @@ export const useKnowledgeStore = create<KnowledgeStore>((set, get) => ({
796797
logger.info(`Knowledge base added: ${knowledgeBase.id}`)
797798
},
798799

800+
updateKnowledgeBase: (id: string, updates: Partial<KnowledgeBaseData>) => {
801+
set((state) => {
802+
const existingKb = state.knowledgeBases[id]
803+
if (!existingKb) return state
804+
805+
const updatedKb = { ...existingKb, ...updates }
806+
807+
return {
808+
knowledgeBases: {
809+
...state.knowledgeBases,
810+
[id]: updatedKb,
811+
},
812+
knowledgeBasesList: state.knowledgeBasesList.map((kb) => (kb.id === id ? updatedKb : kb)),
813+
}
814+
})
815+
logger.info(`Knowledge base updated: ${id}`)
816+
},
817+
799818
removeKnowledgeBase: (id: string) => {
800819
set((state) => {
801820
const newKnowledgeBases = { ...state.knowledgeBases }

0 commit comments

Comments
 (0)