MCPcopy Index your code
hub / github.com/simstudioai/sim / createFolderMutationHandlers

Function createFolderMutationHandlers

apps/sim/hooks/queries/folders.ts:122–156  ·  view source on GitHub ↗

* Creates optimistic mutation handlers for folder operations

(
  queryClient: ReturnType<typeof useQueryClient>,
  name: string,
  createOptimisticFolder: (
    variables: TVariables,
    tempId: string,
    previousFolders: Record<string, WorkflowFolder>
  ) => WorkflowFolder,
  customGenerateTempId?: (variables: TVariables) => string
)

Source from the content-addressed store, hash-verified

120 * Creates optimistic mutation handlers for folder operations
121 */
122function createFolderMutationHandlers<TVariables extends { workspaceId: string }>(
123 queryClient: ReturnType<typeof useQueryClient>,
124 name: string,
125 createOptimisticFolder: (
126 variables: TVariables,
127 tempId: string,
128 previousFolders: Record<string, WorkflowFolder>
129 ) => WorkflowFolder,
130 customGenerateTempId?: (variables: TVariables) => string
131) {
132 return createOptimisticMutationHandlers<WorkflowFolder, TVariables, WorkflowFolder>(queryClient, {
133 name,
134 getQueryKey: (variables) => folderKeys.list(variables.workspaceId),
135 getSnapshot: (variables) => ({ ...getFolderMap(variables.workspaceId) }),
136 generateTempId: customGenerateTempId ?? (() => generateTempId('temp-folder')),
137 createOptimisticItem: (variables, tempId) => {
138 const previousFolders = getFolderMap(variables.workspaceId)
139 return createOptimisticFolder(variables, tempId, previousFolders)
140 },
141 applyOptimisticUpdate: (tempId, item) => {
142 queryClient.setQueryData<WorkflowFolder[]>(folderKeys.list(item.workspaceId), (old) => [
143 ...(old ?? []),
144 item,
145 ])
146 },
147 replaceOptimisticEntry: (tempId, data) => {
148 queryClient.setQueryData<WorkflowFolder[]>(folderKeys.list(data.workspaceId), (old) =>
149 (old ?? []).map((folder) => (folder.id === tempId ? data : folder))
150 )
151 },
152 rollback: (snapshot, variables) => {
153 queryClient.setQueryData(folderKeys.list(variables.workspaceId), Object.values(snapshot))
154 },
155 })
156}
157
158export function useCreateFolder() {
159 const queryClient = useQueryClient()

Callers 2

useCreateFolderFunction · 0.85

Calls 3

getFolderMapFunction · 0.90
generateTempIdFunction · 0.90

Tested by

no test coverage detected