useOperationQueueActions() — supabase Function Reference
Architecture documentation for the useOperationQueueActions() function in useOperationQueueActions.ts from the supabase codebase.
Entity Profile
Dependency Diagram
graph TD 48edc6eb_bdb5_dd99_756a_2e022ea33b4f["useOperationQueueActions()"] 280fff9e_2556_4c11_69f2_23c9ca4d0f0e["useOperationQueueShortcuts()"] 280fff9e_2556_4c11_69f2_23c9ca4d0f0e -->|calls| 48edc6eb_bdb5_dd99_756a_2e022ea33b4f style 48edc6eb_bdb5_dd99_756a_2e022ea33b4f fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
apps/studio/components/grid/hooks/useOperationQueueActions.ts lines 20–81
export function useOperationQueueActions(options: UseOperationQueueActionsOptions = {}) {
const { onSaveSuccess, onCancelSuccess } = options
const queryClient = useQueryClient()
const { data: project } = useSelectedProjectQuery()
const snap = useTableEditorStateSnapshot()
const getImpersonatedRoleState = useGetImpersonatedRoleState()
const { mutate: saveOperationQueue, isPending: isMutationPending } =
useOperationQueueSaveMutation({
onSuccess: () => {
snap.clearQueue()
snap.closeSidePanel()
toast.success('Changes saved successfully')
onSaveSuccess?.()
},
onError: (error) => {
snap.setQueueStatus('idle')
toast.error(`Failed to save changes: ${error.message}`)
},
})
const isSaving = snap.operationQueue.status === 'saving' || isMutationPending
const operations = snap.operationQueue.operations as readonly QueuedOperation[]
const handleSave = useCallback(() => {
if (!project || operations.length === 0) return
snap.setQueueStatus('saving')
saveOperationQueue({
projectRef: project.ref,
connectionString: project.connectionString,
operations,
roleImpersonationState: getImpersonatedRoleState(),
})
}, [snap, project, operations, saveOperationQueue, getImpersonatedRoleState])
const handleCancel = useCallback(() => {
// Get unique table IDs from the queue before clearing
const operations = snap.operationQueue.operations as readonly QueuedOperation[]
const tableIds = [...new Set(operations.map((op) => op.tableId))]
// Clear the queue and invalidate queries to revert optimistic updates
snap.clearQueue()
if (project) {
// Invalidate queries for each table that had pending operations
tableIds.forEach((tableId) => {
queryClient.invalidateQueries({
queryKey: tableRowKeys.tableRowsAndCount(project.ref, tableId),
})
})
}
onCancelSuccess?.()
}, [snap, project, queryClient, onCancelSuccess])
return {
handleSave,
handleCancel,
isSaving,
}
}
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does useOperationQueueActions() do?
useOperationQueueActions() is a function in the supabase codebase.
What calls useOperationQueueActions()?
useOperationQueueActions() is called by 1 function(s): useOperationQueueShortcuts.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free