summaryrefslogtreecommitdiff
path: root/app/lib/camera/hooks/useCameraStore.ts
blob: 874c6274f8ba3afbe6cb31b148c081fd2b2933d9 (plain)
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
// lib/camera/hooks/useCameraStore.ts
import { create } from "zustand";

interface CameraStore {
  barcode: string;
  setBarcode: (barcode: string) => void;

  imageSj: string[]; // dataURL
  setImageSj: (imgOrArr: string | string[]) => void;
  removeSjImage: (idx: number) => void;

  imagePackage: string | null;
  setImagePackage: (image: string | null) => void;

  imageDispatch: string | null;
  setImageDispatch: (image: string | null) => void;
}

const useCameraStore = create<CameraStore>((set) => ({
  barcode: "",
  setBarcode: (barcode) => set({ barcode }),

  imageSj: [],
  setImageSj: (imgOrArr) =>
    set((s) => ({
      imageSj: Array.isArray(imgOrArr) ? imgOrArr : [...s.imageSj, imgOrArr],
    })),
  removeSjImage: (idx) =>
    set((s) => ({ imageSj: s.imageSj.filter((_, i) => i !== idx) })),

  imagePackage: "",
  setImagePackage: (image) => set({ imagePackage: image }),

  imageDispatch: "",
  setImageDispatch: (image) => set({ imageDispatch: image }),
}));

export default useCameraStore;