mirror of
https://github.com/simstudioai/sim.git
synced 2026-04-28 03:00:29 -04:00
cleanup dead sockets adv mode ops
This commit is contained in:
@@ -1,9 +1,8 @@
|
||||
'use client'
|
||||
|
||||
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
||||
import { BookOpen, Check, ChevronDown, ChevronUp, Pencil } from 'lucide-react'
|
||||
import { BookOpen, Check, ChevronUp, Pencil } from 'lucide-react'
|
||||
import { Button, Tooltip } from '@/components/emcn'
|
||||
import { cn } from '@/lib/core/utils/cn'
|
||||
import {
|
||||
buildCanonicalIndex,
|
||||
hasAdvancedValues,
|
||||
@@ -106,18 +105,7 @@ export function Editor() {
|
||||
blockSubBlockValues,
|
||||
canonicalIndex
|
||||
)
|
||||
const displayAdvancedOptions = userPermissions.canEdit
|
||||
? advancedMode
|
||||
: advancedMode || advancedValuesPresent
|
||||
const hasAdvancedOnlyFields = useMemo(() => {
|
||||
if (!blockConfig?.subBlocks) return false
|
||||
return blockConfig.subBlocks.some((subBlock) => {
|
||||
if (subBlock.mode !== 'advanced') return false
|
||||
const canonicalId = canonicalIndex.canonicalIdBySubBlockId[subBlock.id]
|
||||
const group = canonicalId ? canonicalIndex.groupsById[canonicalId] : undefined
|
||||
return !isCanonicalPair(group)
|
||||
})
|
||||
}, [blockConfig?.subBlocks, canonicalIndex])
|
||||
const displayAdvancedOptions = advancedMode || advancedValuesPresent
|
||||
|
||||
// Get subblock layout using custom hook
|
||||
const { subBlocks, stateToUse: subBlockState } = useEditorSubblockLayout(
|
||||
@@ -139,24 +127,14 @@ export function Editor() {
|
||||
})
|
||||
|
||||
// Collaborative actions
|
||||
const {
|
||||
collaborativeToggleBlockAdvancedMode,
|
||||
collaborativeSetBlockCanonicalMode,
|
||||
collaborativeUpdateBlockName,
|
||||
} = useCollaborativeWorkflow()
|
||||
const { collaborativeSetBlockCanonicalMode, collaborativeUpdateBlockName } =
|
||||
useCollaborativeWorkflow()
|
||||
|
||||
// Rename state
|
||||
const [isRenaming, setIsRenaming] = useState(false)
|
||||
const [editedName, setEditedName] = useState('')
|
||||
const nameInputRef = useRef<HTMLInputElement>(null)
|
||||
|
||||
// Mode toggle handlers
|
||||
const handleToggleAdvancedMode = useCallback(() => {
|
||||
if (currentBlockId && userPermissions.canEdit) {
|
||||
collaborativeToggleBlockAdvancedMode(currentBlockId)
|
||||
}
|
||||
}, [currentBlockId, userPermissions.canEdit, collaborativeToggleBlockAdvancedMode])
|
||||
|
||||
/**
|
||||
* Handles starting the rename process.
|
||||
*/
|
||||
@@ -216,26 +194,6 @@ export function Editor() {
|
||||
}
|
||||
}
|
||||
|
||||
const hasAdvancedMode = hasAdvancedOnlyFields
|
||||
|
||||
const autoExpandedBlocksRef = useRef<Set<string>>(new Set())
|
||||
|
||||
useEffect(() => {
|
||||
if (!currentBlockId || !userPermissions.canEdit) return
|
||||
if (!advancedValuesPresent) return
|
||||
if (advancedMode) return
|
||||
if (autoExpandedBlocksRef.current.has(currentBlockId)) return
|
||||
|
||||
autoExpandedBlocksRef.current.add(currentBlockId)
|
||||
collaborativeToggleBlockAdvancedMode(currentBlockId)
|
||||
}, [
|
||||
advancedMode,
|
||||
advancedValuesPresent,
|
||||
collaborativeToggleBlockAdvancedMode,
|
||||
currentBlockId,
|
||||
userPermissions.canEdit,
|
||||
])
|
||||
|
||||
// Determine if connections are at minimum height (collapsed state)
|
||||
const isConnectionsAtMinHeight = connectionsHeight <= 35
|
||||
|
||||
@@ -448,33 +406,6 @@ export function Editor() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{hasAdvancedMode && (
|
||||
<div className='flex flex-shrink-0 items-center border-[var(--border)] border-t px-[8px] py-[6px]'>
|
||||
<Button
|
||||
variant='ghost'
|
||||
className='flex h-[24px] w-full items-center justify-between px-[6px] text-[13px]'
|
||||
onClick={handleToggleAdvancedMode}
|
||||
disabled={!userPermissions.canEdit}
|
||||
aria-label='Toggle advanced options'
|
||||
>
|
||||
<div className='flex items-center gap-[6px]'>
|
||||
<span className='text-[var(--text-primary)]'>
|
||||
{displayAdvancedOptions ? 'Hide advanced options' : 'Show advanced options'}
|
||||
</span>
|
||||
{advancedValuesPresent && (
|
||||
<span className='h-[6px] w-[6px] rounded-full bg-[var(--brand-9)]' />
|
||||
)}
|
||||
</div>
|
||||
<ChevronDown
|
||||
className={cn(
|
||||
'h-[14px] w-[14px] transition-transform',
|
||||
displayAdvancedOptions && 'rotate-180'
|
||||
)}
|
||||
/>
|
||||
</Button>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* Connections Section - Only show when there are connections */}
|
||||
{hasIncomingConnections && (
|
||||
<div
|
||||
|
||||
@@ -200,9 +200,6 @@ export function useCollaborativeWorkflow() {
|
||||
case BLOCK_OPERATIONS.UPDATE_NAME:
|
||||
workflowStore.updateBlockName(payload.id, payload.name)
|
||||
break
|
||||
case BLOCK_OPERATIONS.UPDATE_ADVANCED_MODE:
|
||||
workflowStore.setBlockAdvancedMode(payload.id, payload.advancedMode)
|
||||
break
|
||||
case BLOCK_OPERATIONS.UPDATE_CANONICAL_MODE:
|
||||
workflowStore.setBlockCanonicalMode(
|
||||
payload.id,
|
||||
@@ -923,23 +920,6 @@ export function useCollaborativeWorkflow() {
|
||||
[isInActiveRoom, workflowStore, undoRedo, addToQueue, activeWorkflowId, session?.user?.id]
|
||||
)
|
||||
|
||||
const collaborativeToggleBlockAdvancedMode = useCallback(
|
||||
(id: string) => {
|
||||
const currentBlock = workflowStore.blocks[id]
|
||||
if (!currentBlock) return
|
||||
|
||||
const newAdvancedMode = !currentBlock.advancedMode
|
||||
|
||||
executeQueuedOperation(
|
||||
BLOCK_OPERATIONS.UPDATE_ADVANCED_MODE,
|
||||
OPERATION_TARGETS.BLOCK,
|
||||
{ id, advancedMode: newAdvancedMode },
|
||||
() => workflowStore.toggleBlockAdvancedMode(id)
|
||||
)
|
||||
},
|
||||
[executeQueuedOperation, workflowStore]
|
||||
)
|
||||
|
||||
const collaborativeSetBlockCanonicalMode = useCallback(
|
||||
(id: string, canonicalId: string, canonicalMode: 'basic' | 'advanced') => {
|
||||
executeQueuedOperation(
|
||||
@@ -1625,7 +1605,6 @@ export function useCollaborativeWorkflow() {
|
||||
collaborativeUpdateBlockName,
|
||||
collaborativeBatchToggleBlockEnabled,
|
||||
collaborativeBatchUpdateParent,
|
||||
collaborativeToggleBlockAdvancedMode,
|
||||
collaborativeSetBlockCanonicalMode,
|
||||
collaborativeBatchToggleBlockHandles,
|
||||
collaborativeBatchAddBlocks,
|
||||
|
||||
@@ -3,7 +3,6 @@ export const BLOCK_OPERATIONS = {
|
||||
UPDATE_NAME: 'update-name',
|
||||
TOGGLE_ENABLED: 'toggle-enabled',
|
||||
UPDATE_PARENT: 'update-parent',
|
||||
UPDATE_ADVANCED_MODE: 'update-advanced-mode',
|
||||
UPDATE_CANONICAL_MODE: 'update-canonical-mode',
|
||||
TOGGLE_HANDLES: 'toggle-handles',
|
||||
} as const
|
||||
|
||||
@@ -376,28 +376,6 @@ async function handleBlockOperationTx(
|
||||
break
|
||||
}
|
||||
|
||||
case BLOCK_OPERATIONS.UPDATE_ADVANCED_MODE: {
|
||||
if (!payload.id || payload.advancedMode === undefined) {
|
||||
throw new Error('Missing required fields for update advanced mode operation')
|
||||
}
|
||||
|
||||
const updateResult = await tx
|
||||
.update(workflowBlocks)
|
||||
.set({
|
||||
advancedMode: payload.advancedMode,
|
||||
updatedAt: new Date(),
|
||||
})
|
||||
.where(and(eq(workflowBlocks.id, payload.id), eq(workflowBlocks.workflowId, workflowId)))
|
||||
.returning({ id: workflowBlocks.id })
|
||||
|
||||
if (updateResult.length === 0) {
|
||||
throw new Error(`Block ${payload.id} not found in workflow ${workflowId}`)
|
||||
}
|
||||
|
||||
logger.debug(`Updated block advanced mode: ${payload.id} -> ${payload.advancedMode}`)
|
||||
break
|
||||
}
|
||||
|
||||
case BLOCK_OPERATIONS.UPDATE_CANONICAL_MODE: {
|
||||
if (!payload.id || !payload.canonicalId || !payload.canonicalMode) {
|
||||
throw new Error('Missing required fields for update canonical mode operation')
|
||||
|
||||
@@ -21,7 +21,6 @@ const WRITE_OPERATIONS: string[] = [
|
||||
BLOCK_OPERATIONS.UPDATE_NAME,
|
||||
BLOCK_OPERATIONS.TOGGLE_ENABLED,
|
||||
BLOCK_OPERATIONS.UPDATE_PARENT,
|
||||
BLOCK_OPERATIONS.UPDATE_ADVANCED_MODE,
|
||||
BLOCK_OPERATIONS.UPDATE_CANONICAL_MODE,
|
||||
BLOCK_OPERATIONS.TOGGLE_HANDLES,
|
||||
// Batch block operations
|
||||
|
||||
@@ -30,7 +30,6 @@ export const BlockOperationSchema = z.object({
|
||||
BLOCK_OPERATIONS.UPDATE_NAME,
|
||||
BLOCK_OPERATIONS.TOGGLE_ENABLED,
|
||||
BLOCK_OPERATIONS.UPDATE_PARENT,
|
||||
BLOCK_OPERATIONS.UPDATE_ADVANCED_MODE,
|
||||
BLOCK_OPERATIONS.UPDATE_CANONICAL_MODE,
|
||||
BLOCK_OPERATIONS.TOGGLE_HANDLES,
|
||||
]),
|
||||
@@ -48,7 +47,6 @@ export const BlockOperationSchema = z.object({
|
||||
extent: z.enum(['parent']).nullable().optional(),
|
||||
enabled: z.boolean().optional(),
|
||||
horizontalHandles: z.boolean().optional(),
|
||||
advancedMode: z.boolean().optional(),
|
||||
canonicalId: z.string().optional(),
|
||||
canonicalMode: z.enum(['basic', 'advanced']).optional(),
|
||||
triggerMode: z.boolean().optional(),
|
||||
|
||||
Reference in New Issue
Block a user