Skip to content

Commit 5719766

Browse files
committed
fix(stores): remove dead code causing log spam on startup
1 parent 5157f0b commit 5719766

File tree

4 files changed

+35
-40
lines changed

4 files changed

+35
-40
lines changed

apps/sim/app/workspace/[workspaceId]/layout.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use client'
22

3+
import { CustomToolsLoader } from '@/app/workspace/[workspaceId]/providers/custom-tools-loader'
34
import { GlobalCommandsProvider } from '@/app/workspace/[workspaceId]/providers/global-commands-provider'
45
import { ProviderModelsLoader } from '@/app/workspace/[workspaceId]/providers/provider-models-loader'
56
import { SettingsLoader } from '@/app/workspace/[workspaceId]/providers/settings-loader'
@@ -11,6 +12,7 @@ export default function WorkspaceLayout({ children }: { children: React.ReactNod
1112
<>
1213
<SettingsLoader />
1314
<ProviderModelsLoader />
15+
<CustomToolsLoader />
1416
<GlobalCommandsProvider>
1517
<div className='flex h-screen w-full bg-[var(--bg)]'>
1618
<WorkspacePermissionsProvider>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
'use client'
2+
3+
import { useEffect, useRef } from 'react'
4+
import { useParams } from 'next/navigation'
5+
import { syncCustomToolsToStore, useCustomTools } from '@/hooks/queries/custom-tools'
6+
7+
/**
8+
* Loads custom tools from database and syncs to Zustand store once per workspace.
9+
* This ensures custom tools are available for non-React code (executor handlers, utilities)
10+
* that access the store via getState().
11+
*/
12+
export function CustomToolsLoader() {
13+
const params = useParams()
14+
const workspaceId = params.workspaceId as string
15+
const lastSyncedDataRef = useRef<string | null>(null)
16+
17+
const { data: customTools } = useCustomTools(workspaceId)
18+
19+
useEffect(() => {
20+
if (!customTools) return
21+
22+
// Only sync if data has actually changed (compare by JSON to handle array reference changes)
23+
const dataKey = JSON.stringify(customTools.map((t) => t.id).sort())
24+
if (dataKey === lastSyncedDataRef.current) return
25+
26+
lastSyncedDataRef.current = dataKey
27+
syncCustomToolsToStore(customTools)
28+
}, [customTools])
29+
30+
return null
31+
}

apps/sim/hooks/queries/custom-tools.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ function normalizeCustomTool(tool: ApiCustomTool, workspaceId: string): CustomTo
6464
}
6565
}
6666

67-
function syncCustomToolsToStore(tools: CustomToolDefinition[]) {
67+
export function syncCustomToolsToStore(tools: CustomToolDefinition[]) {
6868
useCustomToolsStore.getState().setTools(tools)
6969
}
7070

@@ -134,19 +134,13 @@ async function fetchCustomTools(workspaceId: string): Promise<CustomToolDefiniti
134134
* Hook to fetch custom tools
135135
*/
136136
export function useCustomTools(workspaceId: string) {
137-
const query = useQuery<CustomToolDefinition[]>({
137+
return useQuery<CustomToolDefinition[]>({
138138
queryKey: customToolsKeys.list(workspaceId),
139139
queryFn: () => fetchCustomTools(workspaceId),
140140
enabled: !!workspaceId,
141141
staleTime: 60 * 1000, // 1 minute - tools don't change frequently
142142
placeholderData: keepPreviousData,
143143
})
144-
145-
if (query.data) {
146-
syncCustomToolsToStore(query.data)
147-
}
148-
149-
return query
150144
}
151145

152146
/**

apps/sim/hooks/use-collaborative-workflow.ts

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,6 @@ export function useCollaborativeWorkflow() {
113113
const {
114114
isConnected,
115115
currentWorkflowId,
116-
presenceUsers,
117-
joinWorkflow,
118-
leaveWorkflow,
119116
emitWorkflowOperation,
120117
emitSubblockUpdate,
121118
emitVariableUpdate,
@@ -143,13 +140,7 @@ export function useCollaborativeWorkflow() {
143140
// Track if we're applying remote changes to avoid infinite loops
144141
const isApplyingRemoteChange = useRef(false)
145142

146-
// Track last applied position timestamps to prevent out-of-order updates
147-
const lastPositionTimestamps = useRef<Map<string, number>>(new Map())
148-
149-
// Operation queue
150143
const {
151-
queue,
152-
hasOperationError,
153144
addToQueue,
154145
confirmOperation,
155146
failOperation,
@@ -161,22 +152,6 @@ export function useCollaborativeWorkflow() {
161152
return !!currentWorkflowId && activeWorkflowId === currentWorkflowId
162153
}, [currentWorkflowId, activeWorkflowId])
163154

164-
// Clear position timestamps when switching workflows
165-
// Note: Workflow joining is now handled automatically by socket connect event based on URL
166-
useEffect(() => {
167-
if (activeWorkflowId && currentWorkflowId !== activeWorkflowId) {
168-
logger.info(`Active workflow changed to: ${activeWorkflowId}`, {
169-
isConnected,
170-
currentWorkflowId,
171-
activeWorkflowId,
172-
presenceUsers: presenceUsers.length,
173-
})
174-
175-
// Clear position timestamps when switching workflows
176-
lastPositionTimestamps.current.clear()
177-
}
178-
}, [activeWorkflowId, isConnected, currentWorkflowId])
179-
180155
// Register emit functions with operation queue store
181156
useEffect(() => {
182157
registerEmitFunctions(
@@ -1621,15 +1596,8 @@ export function useCollaborativeWorkflow() {
16211596
)
16221597

16231598
return {
1624-
// Connection status
16251599
isConnected,
16261600
currentWorkflowId,
1627-
presenceUsers,
1628-
hasOperationError,
1629-
1630-
// Workflow management
1631-
joinWorkflow,
1632-
leaveWorkflow,
16331601

16341602
// Collaborative operations
16351603
collaborativeBatchUpdatePositions,

0 commit comments

Comments
 (0)