front-hub/src/pages/SavedTariffs/index.tsx

78 lines
2.3 KiB
TypeScript
Raw Normal View History

2023-08-27 13:04:26 +00:00
import { IconButton, Box, Typography, useMediaQuery, useTheme } from "@mui/material";
2023-07-25 22:31:04 +00:00
import SectionWrapper from "../../components/SectionWrapper";
import ArrowBackIcon from "@mui/icons-material/ArrowBack";
import { useHistoryTracker } from "@root/utils/hooks/useHistoryTracker";
2023-08-18 16:39:29 +00:00
import SaveWrapper from "./SaveWrapper";
2023-08-27 13:04:26 +00:00
import { useTariffStore, updateTariffs } from "@root/stores/tariffs";
import { getMessageFromFetchError, type Tariff } from "@frontend/kitui";
import { useAllTariffsFetcher } from "@root/utils/hooks/useAllTariffsFetcher";
import { enqueueSnackbar } from "notistack";
2023-07-25 22:31:04 +00:00
2023-08-28 12:34:55 +00:00
export default function SavedTariffs() {
2023-07-25 22:31:04 +00:00
const theme = useTheme();
const upMd = useMediaQuery(theme.breakpoints.up("md"));
2023-08-23 13:24:47 +00:00
const isMobile = useMediaQuery(theme.breakpoints.down(550));
2023-07-25 22:31:04 +00:00
2023-08-23 13:53:15 +00:00
const tariffs: Tariff[] = useTariffStore((state) => state.tariffs);
2023-08-21 15:58:48 +00:00
2023-08-27 13:04:26 +00:00
useAllTariffsFetcher({
onSuccess: updateTariffs,
onError: (error) => {
const errorMessage = getMessageFromFetchError(error);
if (errorMessage) enqueueSnackbar(errorMessage);
},
});
2023-08-21 15:58:48 +00:00
console.log(tariffs);
2023-08-21 15:58:48 +00:00
const handleCustomBackNavigation = useHistoryTracker();
2023-08-18 16:39:29 +00:00
2023-07-25 22:31:04 +00:00
return (
<SectionWrapper
maxWidth="lg"
sx={{
mt: upMd ? "25px" : "20px",
mb: upMd ? "70px" : "37px",
}}
>
<Box
sx={{
mt: "20px",
mb: upMd ? "40px" : "20px",
display: "flex",
2023-08-23 13:24:47 +00:00
alignItems: "center",
2023-07-25 22:31:04 +00:00
gap: "10px",
}}
>
{!upMd && (
2023-08-27 13:04:26 +00:00
<IconButton onClick={handleCustomBackNavigation} sx={{ p: 0, height: "28px", width: "28px", color: "black" }}>
2023-07-25 22:31:04 +00:00
<ArrowBackIcon />
</IconButton>
)}
2023-08-23 13:24:47 +00:00
<Typography
sx={{
fontSize: isMobile ? "24px" : "36px",
fontWeight: "500",
}}
>
Сохраненные тарифы
</Typography>
2023-07-25 22:31:04 +00:00
</Box>
<Box mt={upMd ? "27px" : "10px"}>
{tariffs.map(({ _id, isCustom, privilegies, createdAt }, index) =>
isCustom ? (
<SaveWrapper
first={index === 0}
last={index === tariffs.length - 1}
key={_id}
tariffId={_id}
createdAt={createdAt}
privilegies={privilegies}
/>
) : null
2023-08-18 16:39:29 +00:00
)}
2023-07-25 22:31:04 +00:00
</Box>
</SectionWrapper>
);
}