88 lines
2.7 KiB
TypeScript
88 lines
2.7 KiB
TypeScript
import { Box, Typography } from "@mui/material";
|
||
import {
|
||
clearUserData,
|
||
OriginalUserAccount,
|
||
setUserAccount,
|
||
useUserStore,
|
||
} from "@root/user";
|
||
import { clearAuthToken, getMessageFromFetchError } from "@frontend/kitui";
|
||
import { enqueueSnackbar } from "notistack";
|
||
import { useUserAccountFetcher } from "../../App";
|
||
import { useNavigate } from "react-router-dom";
|
||
|
||
export default function AvailablePrivilege() {
|
||
const user = useUserStore();
|
||
const userPrivileges = user.userAccount?.privileges;
|
||
const userId = useUserStore((state) => state.userId);
|
||
const navigate = useNavigate();
|
||
useUserAccountFetcher<OriginalUserAccount>({
|
||
url: process.env.REACT_APP_DOMAIN + "/squiz/account/get",
|
||
userId,
|
||
onNewUserAccount: setUserAccount,
|
||
onError: (error) => {
|
||
const errorMessage = getMessageFromFetchError(error);
|
||
if (errorMessage) {
|
||
enqueueSnackbar(errorMessage);
|
||
clearUserData();
|
||
clearAuthToken();
|
||
navigate("/signin");
|
||
}
|
||
},
|
||
});
|
||
console.log("это доступные привелегии", userPrivileges);
|
||
const DayForm = ["день", "дня", "дней"];
|
||
function declOfNum(n: number, text_forms: string[]) {
|
||
n = Math.abs(n) % 100;
|
||
var n1 = n % 10;
|
||
if (n > 10 && n < 20) {
|
||
return text_forms[2];
|
||
}
|
||
if (n1 > 1 && n1 < 5) {
|
||
return text_forms[1];
|
||
}
|
||
if (n1 == 1) {
|
||
return text_forms[0];
|
||
}
|
||
return text_forms[2];
|
||
}
|
||
const quizUnlimTime = userPrivileges?.quizUnlimTime?.amount || 0;
|
||
const quizCnt = userPrivileges?.quizCnt?.amount || 0;
|
||
const squizHideBadge = userPrivileges?.squizHideBadge?.amount || 0;
|
||
return (
|
||
<Box
|
||
sx={{
|
||
padding: "20px",
|
||
backgroundColor: "#9A9AAF17",
|
||
width: "100%",
|
||
borderRadius: "12px",
|
||
display: "flex",
|
||
gap: "20px",
|
||
flexWrap: "wrap",
|
||
}}
|
||
>
|
||
<Typography variant={"body1"} sx={{ color: "#9A9AAF" }}>
|
||
Вам доступно:
|
||
</Typography>
|
||
<Typography variant={"body1"} sx={{ color: "#4D4D4D" }}>
|
||
Безлимитные заявки:{" "}
|
||
<strong>
|
||
{quizUnlimTime} {declOfNum(quizUnlimTime, DayForm)}
|
||
</strong>
|
||
</Typography>
|
||
{quizCnt !== 0 && (
|
||
<Typography variant={"body1"} sx={{ color: "#4D4D4D" }}>
|
||
Заявки: <strong>{quizCnt} шт.</strong>
|
||
</Typography>
|
||
)}
|
||
{squizHideBadge !== 0 && (
|
||
<Typography variant={"body1"} sx={{ color: "#4D4D4D" }}>
|
||
Скрытие логотипа PenaQuiz:{" "}
|
||
<strong>
|
||
{squizHideBadge} {declOfNum(squizHideBadge, DayForm)}
|
||
</strong>
|
||
</Typography>
|
||
)}
|
||
</Box>
|
||
);
|
||
}
|