adminFront/src/stores/discounts.ts

91 lines
2.7 KiB
TypeScript
Raw Normal View History

2023-03-06 13:22:12 +00:00
import { GridSelectionModel } from "@mui/x-data-grid";
import { AnyDiscount } from "@root/model/cart";
import { create } from "zustand";
2023-05-18 20:31:36 +00:00
import { devtools } from "zustand/middleware";
2023-03-06 13:22:12 +00:00
import { exampleCartValues } from "./mocks/exampleCartValues";
import { Discount } from "@root/model/discount";
2023-02-18 13:59:36 +00:00
interface DiscountStore {
discounts: Discount[];
2023-03-06 13:22:12 +00:00
selectedDiscountIds: GridSelectionModel,
2023-02-18 13:59:36 +00:00
}
export const useDiscountStore = create<DiscountStore>()(
devtools(
(set, get) => ({
discounts: [],
selectedDiscountIds: [],
}),
{
name: "Real discount store",
enabled: process.env.NODE_ENV === "development"
}
)
);
2023-07-01 17:33:26 +00:00
export const addDiscounts = (newDiscounts: DiscountStore["discounts"]) => {
console.log(useDiscountStore.getState())
console.log(newDiscounts)
useDiscountStore.setState(state => ({ discounts: [...state.discounts, ...newDiscounts] }));
console.log(useDiscountStore.getState())
}
export const setSelectedDiscountIds = (selectedDiscountIds: DiscountStore["selectedDiscountIds"]) => useDiscountStore.setState({ selectedDiscountIds });
/** @deprecated */
interface MockDiscountStore {
discounts: AnyDiscount[];
selectedDiscountIds: GridSelectionModel,
}
/** @deprecated */
export const useMockDiscountStore = create<MockDiscountStore>()(
2023-02-18 13:59:36 +00:00
devtools(
2023-05-18 20:31:36 +00:00
(set, get) => ({
discounts: exampleCartValues.discounts,
selectedDiscountIds: [],
}),
2023-02-18 13:59:36 +00:00
{
name: "Discount store"
}
)
2023-05-18 20:31:36 +00:00
);
/** @deprecated */
export const addMockDiscounts = (newDiscounts: AnyDiscount[]) => useMockDiscountStore.setState(state => ({ discounts: [...state.discounts, ...newDiscounts] }));
2023-05-18 20:31:36 +00:00
/** @deprecated */
export const setMockSelectedDiscountIds = (selectedDiscountIds: MockDiscountStore["selectedDiscountIds"]) => useMockDiscountStore.setState({ selectedDiscountIds });
2023-05-18 20:31:36 +00:00
/** @deprecated */
export const activateMockDiscounts = () => useMockDiscountStore.setState(state => {
2023-05-18 20:31:36 +00:00
const discounts: AnyDiscount[] = [];
state.discounts.forEach(discount => {
if (!state.selectedDiscountIds.includes(discount._id)) return discounts.push(discount);
discounts.push({
...discount,
disabled: false,
});
});
return { discounts };
});
/** @deprecated */
export const deactivateMockDiscounts = () => useMockDiscountStore.setState(state => {
2023-05-18 20:31:36 +00:00
const discounts: AnyDiscount[] = [];
state.discounts.forEach(discount => {
if (!state.selectedDiscountIds.includes(discount._id)) return discounts.push(discount);
discounts.push({
...discount,
disabled: true,
});
});
return { discounts };
});