Skip to content

Commit c0866de

Browse files
committed
fix(kb-connectors): clear canonical siblings when non-canonical dep changes; share selector field
1 parent 2b745ce commit c0866de

File tree

4 files changed

+27
-12
lines changed

4 files changed

+27
-12
lines changed

apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/add-connector-modal/add-connector-modal.tsx

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import { getSubscriptionAccessState } from '@/lib/billing/client'
2323
import { consumeOAuthReturnContext } from '@/lib/credentials/client-state'
2424
import { getProviderIdFromServiceId, type OAuthProvider } from '@/lib/oauth'
2525
import { OAuthModal } from '@/app/workspace/[workspaceId]/components/oauth-modal'
26-
import { ConnectorSelectorField } from '@/app/workspace/[workspaceId]/knowledge/[id]/components/add-connector-modal/components/connector-selector-field'
26+
import { ConnectorSelectorField } from '@/app/workspace/[workspaceId]/knowledge/[id]/components/connector-selector-field'
2727
import { SYNC_INTERVALS } from '@/app/workspace/[workspaceId]/knowledge/[id]/components/consts'
2828
import { MaxBadge } from '@/app/workspace/[workspaceId]/knowledge/[id]/components/max-badge'
2929
import { isBillingEnabled } from '@/app/workspace/[workspaceId]/settings/navigation'
@@ -118,12 +118,17 @@ export function AddConnectorModal({
118118

119119
const dependentFieldIds = useMemo(() => {
120120
if (!connectorConfig) return new Map<string, string[]>()
121-
const map = new Map<string, string[]>()
121+
const map = new Map<string, Set<string>>()
122122
for (const field of connectorConfig.configFields) {
123123
const deps = getDependsOnFields(field.dependsOn)
124124
for (const dep of deps) {
125-
const existing = map.get(dep) ?? []
126-
existing.push(field.id)
125+
const existing = map.get(dep) ?? new Set<string>()
126+
existing.add(field.id)
127+
if (field.canonicalParamId) {
128+
for (const sibling of canonicalGroups.get(field.canonicalParamId) ?? []) {
129+
existing.add(sibling.id)
130+
}
131+
}
127132
map.set(dep, existing)
128133
}
129134
}
@@ -142,11 +147,13 @@ export function AddConnectorModal({
142147
}
143148
if (allDependents.size > 0) {
144149
for (const field of group) {
145-
map.set(field.id, [...allDependents])
150+
map.set(field.id, new Set(allDependents))
146151
}
147152
}
148153
}
149-
return map
154+
const result = new Map<string, string[]>()
155+
for (const [key, value] of map) result.set(key, [...value])
156+
return result
150157
}, [connectorConfig, canonicalGroups])
151158

152159
const handleSelectType = (type: string) => {

apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/add-connector-modal/components/connector-selector-field.tsx renamed to apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/connector-selector-field/connector-selector-field.tsx

File renamed without changes.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { ConnectorSelectorField } from '@/app/workspace/[workspaceId]/knowledge/[id]/components/connector-selector-field/connector-selector-field'

apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/edit-connector-modal/edit-connector-modal.tsx

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import {
2323
Tooltip,
2424
} from '@/components/emcn'
2525
import { getSubscriptionAccessState } from '@/lib/billing/client'
26-
import { ConnectorSelectorField } from '@/app/workspace/[workspaceId]/knowledge/[id]/components/add-connector-modal/components/connector-selector-field'
26+
import { ConnectorSelectorField } from '@/app/workspace/[workspaceId]/knowledge/[id]/components/connector-selector-field'
2727
import { SYNC_INTERVALS } from '@/app/workspace/[workspaceId]/knowledge/[id]/components/consts'
2828
import { MaxBadge } from '@/app/workspace/[workspaceId]/knowledge/[id]/components/max-badge'
2929
import { isBillingEnabled } from '@/app/workspace/[workspaceId]/settings/navigation'
@@ -106,12 +106,17 @@ export function EditConnectorModal({
106106

107107
const dependentFieldIds = useMemo(() => {
108108
if (!connectorConfig) return new Map<string, string[]>()
109-
const map = new Map<string, string[]>()
109+
const map = new Map<string, Set<string>>()
110110
for (const field of connectorConfig.configFields) {
111111
const deps = getDependsOnFields(field.dependsOn)
112112
for (const dep of deps) {
113-
const existing = map.get(dep) ?? []
114-
existing.push(field.id)
113+
const existing = map.get(dep) ?? new Set<string>()
114+
existing.add(field.id)
115+
if (field.canonicalParamId) {
116+
for (const sibling of canonicalGroups.get(field.canonicalParamId) ?? []) {
117+
existing.add(sibling.id)
118+
}
119+
}
115120
map.set(dep, existing)
116121
}
117122
}
@@ -129,10 +134,12 @@ export function EditConnectorModal({
129134
}
130135
}
131136
if (allDependents.size > 0) {
132-
for (const field of group) map.set(field.id, [...allDependents])
137+
for (const field of group) map.set(field.id, new Set(allDependents))
133138
}
134139
}
135-
return map
140+
const result = new Map<string, string[]>()
141+
for (const [key, value] of map) result.set(key, [...value])
142+
return result
136143
}, [connectorConfig, canonicalGroups])
137144

138145
const isFieldVisible = (field: ConnectorConfigField): boolean => {

0 commit comments

Comments
 (0)