Skip to content

Commit 8099e82

Browse files
author
aadamgough
committed
greptile comments resolved
1 parent 210bf41 commit 8099e82

File tree

3 files changed

+31
-8
lines changed

3 files changed

+31
-8
lines changed

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/mcp/mcp.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ export function McpDeploy({
148148
const [parameterDescriptions, setParameterDescriptions] = useState<Record<string, string>>({})
149149
const [pendingServerChanges, setPendingServerChanges] = useState<Set<string>>(new Set())
150150
const [saveError, setSaveError] = useState<string | null>(null)
151+
const isSavingRef = useRef(false)
151152

152153
const parameterSchema = useMemo(
153154
() => generateParameterSchema(inputFormat, parameterDescriptions),
@@ -190,6 +191,7 @@ export function McpDeploy({
190191
const selectedServerIds = pendingSelectedServerIds ?? actualServerIds
191192

192193
useEffect(() => {
194+
if (isSavingRef.current) return
193195
if (pendingSelectedServerIds !== null) {
194196
const pendingSet = new Set(pendingSelectedServerIds)
195197
const actualSet = new Set(actualServerIds)
@@ -302,6 +304,7 @@ export function McpDeploy({
302304
if (!toolName.trim()) return
303305
if (selectedServerIds.length === 0) return
304306

307+
isSavingRef.current = true
305308
onSubmittingChange?.(true)
306309
setSaveError(null)
307310

@@ -394,11 +397,10 @@ export function McpDeploy({
394397
}
395398
}
396399

397-
refetchServers()
398-
399400
if (errors.length > 0) {
400401
setSaveError(errors.join('. '))
401402
} else {
403+
refetchServers()
402404
setPendingSelectedServerIds(null)
403405
setSavedValues({
404406
toolName,
@@ -408,6 +410,7 @@ export function McpDeploy({
408410
onCanSaveChange?.(false)
409411
}
410412

413+
isSavingRef.current = false
411414
onSubmittingChange?.(false)
412415
}, [
413416
toolName,

apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/workflow-mcp-servers/workflow-mcp-servers.tsx

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ function WorkflowTagSelect({
6666
return workflows.filter((w) => selectedIds.includes(w.id))
6767
}, [workflows, selectedIds])
6868

69+
const validSelectedIds = useMemo(() => {
70+
const workflowIds = new Set(workflows.map((w) => w.id))
71+
return selectedIds.filter((id) => workflowIds.has(id))
72+
}, [workflows, selectedIds])
73+
6974
const handleRemove = (e: React.MouseEvent, id: string) => {
7075
e.preventDefault()
7176
e.stopPropagation()
@@ -109,7 +114,7 @@ function WorkflowTagSelect({
109114
<Combobox
110115
options={options}
111116
multiSelect
112-
multiSelectValues={selectedIds}
117+
multiSelectValues={validSelectedIds}
113118
onMultiSelectChange={onSelectionChange}
114119
placeholder={isEmpty ? 'No deployed workflows available' : 'Select deployed workflows...'}
115120
overlayContent={overlayContent}
@@ -124,9 +129,15 @@ interface ServerDetailViewProps {
124129
workspaceId: string
125130
serverId: string
126131
onBack: () => void
132+
onToolsChanged?: () => void
127133
}
128134

129-
function ServerDetailView({ workspaceId, serverId, onBack }: ServerDetailViewProps) {
135+
function ServerDetailView({
136+
workspaceId,
137+
serverId,
138+
onBack,
139+
onToolsChanged,
140+
}: ServerDetailViewProps) {
130141
const { data, isLoading, error, refetch } = useWorkflowMcpServer(workspaceId, serverId)
131142
const { data: deployedWorkflows = [], isLoading: isLoadingWorkflows } =
132143
useDeployedWorkflows(workspaceId)
@@ -165,6 +176,7 @@ function ServerDetailView({ workspaceId, serverId, onBack }: ServerDetailViewPro
165176
toolId: toolToDelete.id,
166177
})
167178
setToolToDelete(null)
179+
onToolsChanged?.()
168180
} catch (err) {
169181
logger.error('Failed to delete tool:', err)
170182
}
@@ -181,6 +193,7 @@ function ServerDetailView({ workspaceId, serverId, onBack }: ServerDetailViewPro
181193
setShowAddWorkflow(false)
182194
setSelectedWorkflowId(null)
183195
refetch()
196+
onToolsChanged?.()
184197
} catch (err) {
185198
logger.error('Failed to add workflow:', err)
186199
}
@@ -204,7 +217,7 @@ function ServerDetailView({ workspaceId, serverId, onBack }: ServerDetailViewPro
204217
return availableWorkflows.find((w) => w.id === selectedWorkflowId)
205218
}, [availableWorkflows, selectedWorkflowId])
206219

207-
const selectedWorkflowInvalid = selectedWorkflow && selectedWorkflow.hasStartBlock === false
220+
const selectedWorkflowInvalid = selectedWorkflow && selectedWorkflow.hasStartBlock !== true
208221

209222
if (isLoading) {
210223
return (
@@ -553,7 +566,12 @@ export function WorkflowMcpServers({ resetKey }: WorkflowMcpServersProps) {
553566
const params = useParams()
554567
const workspaceId = params.workspaceId as string
555568

556-
const { data: servers = [], isLoading, error } = useWorkflowMcpServers(workspaceId)
569+
const {
570+
data: servers = [],
571+
isLoading,
572+
error,
573+
refetch: refetchServers,
574+
} = useWorkflowMcpServers(workspaceId)
557575
const { data: deployedWorkflows = [], isLoading: isLoadingWorkflows } =
558576
useDeployedWorkflows(workspaceId)
559577
const createServerMutation = useCreateWorkflowMcpServer()
@@ -584,7 +602,7 @@ export function WorkflowMcpServers({ resetKey }: WorkflowMcpServersProps) {
584602
const invalidWorkflows = useMemo(() => {
585603
return selectedWorkflowIds
586604
.map((id) => deployedWorkflows.find((w) => w.id === id))
587-
.filter((w) => w && w.hasStartBlock === false)
605+
.filter((w) => w && w.hasStartBlock !== true)
588606
.map((w) => w!.name)
589607
}, [selectedWorkflowIds, deployedWorkflows])
590608

@@ -634,6 +652,7 @@ export function WorkflowMcpServers({ resetKey }: WorkflowMcpServersProps) {
634652

635653
if (workflowErrors.length > 0) {
636654
setCreateError(`Server created but failed to add workflows: ${workflowErrors.join(', ')}`)
655+
return
637656
}
638657
}
639658

@@ -673,6 +692,7 @@ export function WorkflowMcpServers({ resetKey }: WorkflowMcpServersProps) {
673692
workspaceId={workspaceId}
674693
serverId={selectedServerId}
675694
onBack={() => setSelectedServerId(null)}
695+
onToolsChanged={refetchServers}
676696
/>
677697
)
678698
}

apps/sim/hooks/queries/workflow-mcp-servers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ async function fetchDeployedWorkflows(workspaceId: string): Promise<DeployedWork
467467
name: w.name,
468468
description: w.description,
469469
isDeployed: w.isDeployed,
470-
hasStartBlock: startBlockMap[w.id] ?? false,
470+
hasStartBlock: startBlockMap[w.id],
471471
}))
472472
}
473473

0 commit comments

Comments
 (0)