import { useEffect, useState } from "react"; import { useLocation } from "react-router-dom"; import { Box, IconButton, Typography, useMediaQuery, useTheme } from "@mui/material"; import SectionWrapper from "@components/SectionWrapper"; import { useTariffStore } from "@root/stores/tariffs"; import { enqueueSnackbar } from "notistack"; import { Select } from "@root/components/Select"; import { Tabs } from "@root/components/Tabs"; import TariffCard from "./TariffCard"; import NumberIcon from "@root/components/NumberIcon"; import { currencyFormatter } from "@root/utils/currencyFormatter"; import { calcIndividualTariffPrices } from "@root/utils/calcTariffPrices"; import { Tariff, getMessageFromFetchError } from "@frontend/kitui"; import FreeTariffCard from "./FreeTariffCard"; import { addTariffToCart, useUserStore } from "@root/stores/user"; import { useDiscountStore } from "@root/stores/discounts"; import { Slider } from "./slider"; import { useCartStore } from "@root/stores/cart"; import ArrowBackIcon from "@mui/icons-material/ArrowBack"; import { usePrevLocation } from "@root/utils/hooks/handleCustomBackNavigation"; import { withErrorBoundary } from "react-error-boundary"; import { handleComponentError } from "@root/utils/handleComponentError"; import { useHistoryStore } from "@root/stores/history"; import { useRecentlyPurchasedTariffs } from "@utils/hooks/useRecentlyPurchasedTariffs"; import { FullTariff } from "@root/model/tariff" const subPages = ["Опросник", /*"Шаблонизатор",*/ /*"Сокращатель ссылок"*/]; const StepperText: Record = { volume: "Тарифы на объём", time: "Тарифы на время", }; function TariffPage() { const theme = useTheme(); const upMd = useMediaQuery(theme.breakpoints.up("md")); const isMobile = useMediaQuery(theme.breakpoints.down(600)); const isTablet = useMediaQuery(theme.breakpoints.down(1000)); const location = useLocation(); const tariffs = useTariffStore((state) => state.tariffs); const [selectedItem, setSelectedItem] = useState(0); const discounts = useDiscountStore((state) => state.discounts); const purchasesAmount = useUserStore((state) => state.userAccount?.wallet.spent) ?? 0; const cartTariffMap = useCartStore((state) => state.cartTariffMap); const isUserNko = useUserStore((state) => state.userAccount?.status) === "nko"; const historyData = useHistoryStore((state) => state.history); const { recentlyPurchased } = useRecentlyPurchasedTariffs(); const handleCustomBackNavigation = usePrevLocation(location); const unit: string = String(location.pathname).slice(9); const currentTariffs = Object.values(cartTariffMap).filter((tariff): tariff is FullTariff => typeof tariff === "object"); function handleTariffItemClick(tariffId: string) { addTariffToCart(tariffId) .then(() => { enqueueSnackbar("Тариф добавлен в корзину"); }) .catch((error) => { const message = getMessageFromFetchError(error); if (message) enqueueSnackbar(message); }); } console.log("tariffstariffstariffstariffs", tariffs) const filteredTariffs = tariffs.filter((tariff) => { if (tariff.privileges[0] === undefined) return false if ( tariff.privileges[0].type === "day" === (unit === "time") && !tariff.isDeleted && !tariff.isCustom ) { if (selectedItem === 0 && tariff.privileges[0].serviceKey === "squiz") return true if (selectedItem === 1 && tariff.privileges[0].serviceKey === "templategen") return true } return false }); const isCustomTariffs = tariffs.filter((tariff) => { return ( tariff.privileges.map((p) => p.type).includes("day") === (unit === "time") && !tariff.isDeleted && tariff.isCustom ); }); const tariffsFromHistory = tariffs.filter((tariff) => { if (!historyData) return false; const historyTariffIds = historyData.map((historyRecord) => (historyRecord.rawDetails[0] as any).Value[0][0].Value); return historyTariffIds.includes(tariff._id); }); const createTariffElements = (filteredTariffs: FullTariff[], addFreeTariff = false) => { console.log(filteredTariffs) const tariffElements = filteredTariffs .filter((tariff) => tariff.privileges.length > 0) .map((tariff, index) => { const { priceBeforeDiscounts, priceAfterDiscounts } = calcIndividualTariffPrices( tariff, discounts, purchasesAmount, currentTariffs, isUserNko ); console.log('TECCCCCCCC',priceBeforeDiscounts, priceAfterDiscounts,tariff, discounts, purchasesAmount, currentTariffs, isUserNko) return ( } buttonProps={{ text: "Выбрать", onClick: () => handleTariffItemClick(tariff._id), }} headerText={tariff.name} text={tariff.description ||""} price={ <> {priceBeforeDiscounts !== priceAfterDiscounts && ( {currencyFormatter.format(priceBeforeDiscounts / 100)} )} {currencyFormatter.format(priceAfterDiscounts / 100)} } /> ); }); if (addFreeTariff) { if (tariffElements.length < 6) tariffElements.push(); else tariffElements.splice(5, 0, ); } return tariffElements; }; return ( {isMobile && ( )} {StepperText[unit]} {/* {isMobile ? (