fix store usage

This commit is contained in:
nflnkr 2023-07-03 14:08:20 +03:00
parent ab772c116b
commit be99542dee
4 changed files with 5 additions and 167 deletions

@ -5,7 +5,6 @@ import { useState } from "react";
import { SERVICE_LIST, ServiceType } from "@root/model/tariff";
import { CustomTextField } from "@root/kitUI/CustomTextField";
import { resetPrivilegeArray, usePrivilegeStore } from "@root/stores/privilegesStore";
import { setRealPrivileges, useRealPrivilegeStore } from "@root/stores/privileges";
import { addDiscount } from "@root/stores/discounts";
import { enqueueSnackbar } from "notistack";
import { DiscountType, discountTypes } from "@root/model/discount";
@ -26,7 +25,7 @@ export default function CreateDiscount() {
const [cartPurchasesAmountField, setCartPurchasesAmountField] = useState<string>("0");
const [discountMinValueField, setDiscountMinValueField] = useState<string>("0");
usePrivileges({ onNewPrivileges: setRealPrivileges });
usePrivileges({ onNewPrivileges: resetPrivilegeArray });
const handleDiscountTypeChange = (event: React.ChangeEvent<HTMLInputElement>) => {
setDiscountType(event.target.value as DiscountType);

@ -1,10 +1,10 @@
import { Box, Button, Dialog, FormControl, FormControlLabel, FormLabel, InputLabel, MenuItem, Radio, RadioGroup, Select, SelectChangeEvent, Typography, useTheme } from "@mui/material";
import { createDiscount, patchDiscount } from "@root/api/discounts";
import { patchDiscount } from "@root/api/discounts";
import { CustomTextField } from "@root/kitUI/CustomTextField";
import { DiscountType, discountTypes } from "@root/model/discount";
import { ServiceType, SERVICE_LIST } from "@root/model/tariff";
import { closeEditDiscountDialog, updateDiscount, useDiscountStore } from "@root/stores/discounts";
import { setRealPrivileges, useRealPrivilegeStore } from "@root/stores/privileges";
import { resetPrivilegeArray, usePrivilegeStore } from "@root/stores/privilegesStore";
import { getDiscountTypeFromLayer } from "@root/utils/discount";
import usePrivileges from "@root/utils/hooks/usePrivileges";
import { enqueueSnackbar } from "notistack";
@ -15,7 +15,7 @@ export default function EditDiscountDialog() {
const theme = useTheme();
const editDiscountId = useDiscountStore(state => state.editDiscountId);
const discounts = useDiscountStore(state => state.discounts);
const privileges = useRealPrivilegeStore(state => state.privileges);
const privileges = usePrivilegeStore(state => state.privileges);
const [serviceType, setServiceType] = useState<ServiceType>("templategen");
const [discountType, setDiscountType] = useState<DiscountType>("purchasesAmount");
const [discountNameField, setDiscountNameField] = useState<string>("");
@ -28,7 +28,7 @@ export default function EditDiscountDialog() {
const discount = discounts.find(discount => discount.ID === editDiscountId);
usePrivileges({ onNewPrivileges: setRealPrivileges });
usePrivileges({ onNewPrivileges: resetPrivilegeArray });
useEffect(function setDiscountFields() {
if (!discount) return;

@ -1,91 +0,0 @@
import { Privilege } from "@root/model/tariff";
import { create } from "zustand";
import { devtools } from "zustand/middleware";
import { exampleCartValues } from "./mocks/exampleCartValues";
import { RealPrivilege } from "@root/model/privilege";
interface RealPrivilegeStore {
privileges: RealPrivilege[];
}
export const useRealPrivilegeStore = create<RealPrivilegeStore>()(
devtools(
(set, get) => ({
privileges: [],
}),
{
name: "Privilege store",
}
)
);
export const setRealPrivileges = (privileges: RealPrivilegeStore["privileges"]) => useRealPrivilegeStore.setState({ privileges });
/** @deprecated */
interface PrivilegeStore {
privileges: Privilege[];
isModalOpen: boolean;
modalPrivilegeId: string | null;
modalPriceField: string;
addPrivileges: (newPrivileges: Privilege[]) => void;
}
/** @deprecated */
export const usePrivilegeStore = create<PrivilegeStore>()(
devtools(
(set, get) => ({
privileges: exampleCartValues.privileges,
isModalOpen: false,
modalPrivilegeId: null,
modalPriceField: "",
addPrivileges: (newPrivileges) => set((state) => ({ privileges: [...state.privileges, ...newPrivileges] })),
}),
{
name: "Mock Privilege store",
}
)
);
/** @deprecated */
export const closePrivilegePriceModal = () => usePrivilegeStore.setState({ isModalOpen: false });
/** @deprecated */
export const openPrivilegePriceModal = (modalPrivilegeId: string | null, defaultPrice: number) =>
usePrivilegeStore.setState({
isModalOpen: true,
modalPriceField: defaultPrice.toString(),
modalPrivilegeId,
});
/** @deprecated */
export const changeModalPriceField = (modalPriceField: string) => usePrivilegeStore.setState({ modalPriceField });
/** @deprecated */
export const changePrivilegePrice = () => {
const { privileges, modalPrivilegeId, modalPriceField } = usePrivilegeStore.getState();
const privilegeIndex = privileges.findIndex((privilege) => privilege.privilegeId === modalPrivilegeId);
if (privilegeIndex === -1) throw new Error("Privilege not found by id");
const price = parseFloat(modalPriceField.replace(",", "."));
if (!isFinite(price)) return "Error parsing price";
const newPrivilege: Privilege = {
...privileges[privilegeIndex],
price: price,
};
const newPrivileges = [...privileges];
newPrivileges.splice(privilegeIndex, 1, newPrivilege);
usePrivilegeStore.setState({
privileges: newPrivileges,
isModalOpen: false,
});
};
/** @deprecated */
export const findPrivilegeById = (privilegeId: string) => {
return usePrivilegeStore.getState().privileges.find((privilege) => privilege.privilegeId === privilegeId) ?? null;
};

@ -1,7 +1,5 @@
import { Privilege } from "@root/model/tariff";
import { create } from "zustand";
import { devtools } from "zustand/middleware";
import { exampleCartValues } from "./mocks/exampleCartValues";
import { RealPrivilege } from "@root/model/privilege";
interface RealPrivilegeStore {
@ -21,74 +19,6 @@ export const usePrivilegeStore = create<RealPrivilegeStore>()(
export const resetPrivilegeArray = (privileges: RealPrivilegeStore["privileges"]) => usePrivilegeStore.setState({ privileges });
/** @deprecated */
// interface PrivilegeStore {
// privileges: Privilege[];
// isModalOpen: boolean;
// modalPrivilegeId: string | null;
// modalPriceField: string;
// addPrivileges: (newPrivileges: Privilege[]) => void;
// }
/** @deprecated */
// export const usePrivilegeStore = create<PrivilegeStore>()(
// devtools(
// (set, get) => ({
// privileges: exampleCartValues.privileges,
// isModalOpen: false,
// modalPrivilegeId: null,
// modalPriceField: "",
// addPrivileges: (newPrivileges) => set((state) => ({ privileges: [...state.privileges, ...newPrivileges] })),
// }),
// {
// name: "Mock Privilege store",
// }
// )
// );
// /** @deprecated */
// export const closePrivilegePriceModal = () => usePrivilegeStore.setState({ isModalOpen: false });
// /** @deprecated */
// export const openPrivilegePriceModal = (modalPrivilegeId: string | null, defaultPrice: number) =>
// usePrivilegeStore.setState({
// isModalOpen: true,
// modalPriceField: defaultPrice.toString(),
// modalPrivilegeId,
// });
// /** @deprecated */
// export const changeModalPriceField = (modalPriceField: string) => usePrivilegeStore.setState({ modalPriceField });
// /** @deprecated */
// export const changePrivilegePrice = () => {
// const { privileges, modalPrivilegeId, modalPriceField } = usePrivilegeStore.getState();
// const privilegeIndex = privileges.findIndex((privilege) => privilege.privilegeId === modalPrivilegeId);
// if (privilegeIndex === -1) throw new Error("Privilege not found by id");
// const price = parseFloat(modalPriceField.replace(",", "."));
// if (!isFinite(price)) return "Error parsing price";
// const newPrivilege: Privilege = {
// ...privileges[privilegeIndex],
// price: price,
// };
// const newPrivileges = [...privileges];
// newPrivileges.splice(privilegeIndex, 1, newPrivilege);
// usePrivilegeStore.setState({
// privileges: newPrivileges,
// isModalOpen: false,
// });
// };
/** @deprecated */
export const findPrivilegeById = (privilegeId: string) => {
return usePrivilegeStore.getState().privileges.find((privilege) => privilege.privilegeId === privilegeId) ?? null;
};