2023-03-06 13:22:12 +00:00
|
|
|
import { Promocode } from "@root/model/cart";
|
|
|
|
import { create } from "zustand";
|
2023-02-18 13:59:36 +00:00
|
|
|
import { devtools, persist } from "zustand/middleware";
|
|
|
|
|
|
|
|
|
|
|
|
interface PromocodeStore {
|
2023-03-06 13:22:12 +00:00
|
|
|
promocodes: Promocode[];
|
|
|
|
addPromocodes: (newPromocodes: Promocode[]) => void;
|
|
|
|
deletePromocodes: (promocodeIdsToDelete: string[]) => void;
|
2023-02-18 13:59:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
export const usePromocodeStore = create<PromocodeStore>()(
|
|
|
|
devtools(
|
2023-03-06 13:22:12 +00:00
|
|
|
// persist(
|
2023-02-18 13:59:36 +00:00
|
|
|
(set, get) => ({
|
2023-03-06 13:22:12 +00:00
|
|
|
promocodes: [],
|
|
|
|
addPromocodes: newPromocodes => set(state => (
|
|
|
|
{ promocodes: [...state.promocodes, ...newPromocodes] }
|
|
|
|
)),
|
|
|
|
deletePromocodes: promocodeIdsToDelete => set(state => (
|
|
|
|
{ promocodes: state.promocodes.filter(promocode => !promocodeIdsToDelete.includes(promocode.id)) }
|
|
|
|
)),
|
2023-02-18 13:59:36 +00:00
|
|
|
}),
|
2023-03-06 13:22:12 +00:00
|
|
|
// {
|
|
|
|
// name: "promocodes",
|
|
|
|
// getStorage: () => localStorage,
|
|
|
|
// }
|
|
|
|
// ),
|
2023-02-18 13:59:36 +00:00
|
|
|
{
|
|
|
|
name: "Promocode store"
|
|
|
|
}
|
|
|
|
)
|
|
|
|
);
|