51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import { create } from "zustand";
|
|
import { persist } from "zustand/middleware";
|
|
import { Tariff_BACKEND, Tariff_FRONTEND } from "@root/model/tariff";
|
|
|
|
|
|
interface TariffStore {
|
|
tariffs: Tariff_FRONTEND[]
|
|
}
|
|
|
|
export const useTariffStore = create<TariffStore>()(
|
|
persist(
|
|
(set, get) => ({
|
|
tariffs: [],
|
|
// tariffs: exampleTariffs,
|
|
}),
|
|
{
|
|
name: "Tariff store",
|
|
}
|
|
)
|
|
);
|
|
|
|
|
|
export const resetTariffs = (newTariff: Tariff_FRONTEND[]) => useTariffStore.setState((state) => ({ tariffs: newTariff }));
|
|
|
|
export const updateTariff = (tariff: Tariff_FRONTEND) => {
|
|
let stateTariffs = useTariffStore.getState().tariffs
|
|
let index
|
|
stateTariffs.forEach((e,i) => { //ищем такой тариф для замены на новый
|
|
if (e.id == tariff.id) index = i
|
|
})
|
|
if (index === undefined) {// не нашли. Добавляем
|
|
addTariffs([tariff])
|
|
} else { //нашли. Заменяем
|
|
stateTariffs[index] = tariff
|
|
useTariffStore.setState(() => ({tariffs: stateTariffs}))
|
|
}
|
|
}
|
|
|
|
|
|
export const addTariffs = (newTariffs: Tariff_FRONTEND[]) => {
|
|
let stateTariffs = useTariffStore.getState().tariffs
|
|
let newArrayTariffs = [...stateTariffs, ...newTariffs]
|
|
newArrayTariffs.forEach((tariff) => {
|
|
updateTariff(tariff)
|
|
})
|
|
}
|
|
export const deleteTariffs = (tariffId: string) =>
|
|
useTariffStore.setState((state) => ({
|
|
tariffs: state.tariffs.filter((tariff) => tariff.id !== tariffId),
|
|
}));
|