Spaces:
Sleeping
Sleeping
File size: 965 Bytes
05c5ed5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | "use client";
import { DBWorkflow } from "app-types/workflow";
import { generateUUID } from "lib/utils";
import { create } from "zustand";
export interface WorkflowState {
workflow?: DBWorkflow;
processIds: string[];
hasEditAccess?: boolean;
}
export interface WorkflowDispatch {
init: (workflow?: DBWorkflow, hasEditAccess?: boolean) => void;
addProcess: () => () => void;
}
const initialState: WorkflowState = {
processIds: [],
};
export const useWorkflowStore = create<WorkflowState & WorkflowDispatch>(
(set) => ({
...initialState,
init: (workflow, hasEditAccess) =>
set({ ...initialState, workflow, hasEditAccess }),
addProcess: () => {
const processId = generateUUID();
set((state) => ({
processIds: [...state.processIds, processId],
}));
return () => {
set((state) => ({
processIds: state.processIds.filter((id) => id !== processId),
}));
};
},
}),
);
|