adminFront/src/stores/tariffs.ts

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),
}));