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),
        }));
      };
    },
  }),
);