diff --git a/src/pages/Tariffs/Tariffs.tsx b/src/pages/Tariffs/Tariffs.tsx index 8ad4d2b4..db197883 100644 --- a/src/pages/Tariffs/Tariffs.tsx +++ b/src/pages/Tariffs/Tariffs.tsx @@ -18,7 +18,7 @@ import { IconButton, } from "@mui/material"; import { enqueueSnackbar } from "notistack"; -import { Tariff, getMessageFromFetchError } from "@frontend/kitui"; +import { getMessageFromFetchError } from "@frontend/kitui"; import { withErrorBoundary } from "react-error-boundary"; import { createTariffElements } from "./tariffsUtils/createTariffElements"; import HeaderFull from "@ui_kit/Header/HeaderFull"; @@ -28,35 +28,58 @@ import { clearUserData } from "@root/user"; import ArrowLeft from "@icons/questionsPage/arrowLeft"; import { currencyFormatter } from "./tariffsUtils/currencyFormatter"; +import type { Tariff } from "@frontend/kitui"; + function TariffPage() { const theme = useTheme(); const isTablet = useMediaQuery(theme.breakpoints.down(1000)); const location = useLocation(); const navigate = useNavigate(); - const [tariffs, setTariffs] = useState(); + const [tariffs, setTariffs] = useState([]); const [user, setUser] = useState(); const [discounts, setDiscounts] = useState(); const [cartTariffMap, setCartTariffMap] = useState(); const [openModal, setOpenModal] = useState({}); const [cash, setCash] = useState("0"); + const getTariffsList = async (): Promise => { + const tariffsList: Tariff[] = []; + const { tariffs, totalPages } = await makeRequest< + never, + GetTariffsResponse + >({ + method: "GET", + url: "https://squiz.pena.digital/strator/tariff?page=1&limit=100", + }); + + tariffsList.push(...tariffs); + + for (let page = 2; page <= totalPages; page += 1) { + const tariffsResult = await makeRequest({ + method: "GET", + url: `https://squiz.pena.digital/strator/tariff?page=${page}&limit=100`, + }); + + tariffsList.concat(tariffsResult.tariffs); + } + + return tariffsList; + }; + useEffect(() => { const get = async () => { const user = await makeRequest({ method: "GET", url: "https://squiz.pena.digital/customer/account", }); - const tariffs = await makeRequest({ - method: "GET", - url: "https://squiz.pena.digital/strator/tariff?page=1&limit=100", - }); + const tariffsList = await getTariffsList(); const discounts = await makeRequest({ method: "GET", url: "https://squiz.pena.digital/price/discounts", }); setUser(user); - setTariffs(tariffs); + setTariffs(tariffsList); setDiscounts(discounts.Discounts); let c = currencyFormatter.format(Number(user.wallet.cash) / 100); setCash(c); @@ -107,7 +130,7 @@ function TariffPage() { const purchasesAmount = user?.wallet.purchasesAmount ?? 0; const isUserNko = user?.status === "nko"; - const filteredTariffs = tariffs.tariffs.filter((tariff) => { + const filteredTariffs = tariffs.filter((tariff) => { return ( tariff.privileges[0].serviceKey === "squiz" && !tariff.isDeleted && diff --git a/src/pages/Tariffs/tariffsUtils/createTariffElements.tsx b/src/pages/Tariffs/tariffsUtils/createTariffElements.tsx index f552bb85..bebacbe4 100644 --- a/src/pages/Tariffs/tariffsUtils/createTariffElements.tsx +++ b/src/pages/Tariffs/tariffsUtils/createTariffElements.tsx @@ -4,7 +4,7 @@ import NumberIcon from "@icons/NumberIcon"; import { calcIndividualTariffPrices } from "./calcTariffPrices"; import { currencyFormatter } from "./currencyFormatter"; import FreeTariffCard from "./FreeTariffCard"; -import { Typography, useTheme } from "@mui/material"; +import { Typography } from "@mui/material"; export const createTariffElements = ( filteredTariffs: Tariff[], @@ -13,7 +13,6 @@ export const createTariffElements = ( discounts: any, onclick: any, ) => { - const theme = useTheme(); const tariffElements = filteredTariffs .filter((tariff) => tariff.privileges.length > 0) .map((tariff, index) => {