Merge branch 'dev' into 'staging'

Dev

See merge request frontend/marketplace!209
This commit is contained in:
Nastya 2024-07-06 11:33:51 +00:00
commit ec86a37d91
5 changed files with 50 additions and 5 deletions

@ -20,6 +20,7 @@ export const CustomSlider = ({
const [step, setStep] = useState<number>(1) const [step, setStep] = useState<number>(1)
useEffect(() => { useEffect(() => {
if (firstStep === 1) return setStep(1)
if (value <= firstStep) { if (value <= firstStep) {
return setStep(firstStep) return setStep(firstStep)
} }

@ -20,6 +20,7 @@ import { withErrorBoundary } from "react-error-boundary";
import { handleComponentError } from "@root/utils/handleComponentError"; import { handleComponentError } from "@root/utils/handleComponentError";
import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline"; import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline";
import { setNotEnoughMoneyAmount, useCartStore } from "@root/stores/cart"; import { setNotEnoughMoneyAmount, useCartStore } from "@root/stores/cart";
import { useDiffMoney } from "@root/stores/diffMoney";
function Drawers() { function Drawers() {
const [openNotificationsModal, setOpenNotificationsModal] = useState<boolean>(false); const [openNotificationsModal, setOpenNotificationsModal] = useState<boolean>(false);
@ -35,6 +36,7 @@ function Drawers() {
const userAccount = useUserStore((state) => state.userAccount); const userAccount = useUserStore((state) => state.userAccount);
const tickets = useTicketStore((state) => state.tickets); const tickets = useTicketStore((state) => state.tickets);
const notEnoughMoneyAmount = useCartStore(state => state.notEnoughMoneyAmount); const notEnoughMoneyAmount = useCartStore(state => state.notEnoughMoneyAmount);
const { setNewDiff } = useDiffMoney()
const notificationsCount = tickets.filter( const notificationsCount = tickets.filter(
({ user, top_message }) => user !== top_message.user_id && top_message.shown.me !== 1 ({ user, top_message }) => user !== top_message.user_id && top_message.shown.me !== 1
@ -67,6 +69,9 @@ function Drawers() {
function handleReplenishWallet() { function handleReplenishWallet() {
setIsDrawerOpen(false); setIsDrawerOpen(false);
if (location.pathname.includes("/payment")) {
setNewDiff(notEnoughMoneyAmount)
}
navigate("/payment", { state: { notEnoughMoneyAmount } }); navigate("/payment", { state: { notEnoughMoneyAmount } });
} }

@ -25,13 +25,15 @@ import { currencyFormatter } from "@root/utils/currencyFormatter";
import { useHistoryTracker } from "@root/utils/hooks/useHistoryTracker"; import { useHistoryTracker } from "@root/utils/hooks/useHistoryTracker";
import { cardShadow } from "@root/utils/theme"; import { cardShadow } from "@root/utils/theme";
import { enqueueSnackbar } from "notistack"; import { enqueueSnackbar } from "notistack";
import { useLayoutEffect, useState } from "react"; import { useEffect, useLayoutEffect, useState } from "react";
import { useLocation, useNavigate } from "react-router-dom"; import { useLocation, useNavigate } from "react-router-dom";
import CollapsiblePromocodeField from "./CollapsiblePromocodeField"; import CollapsiblePromocodeField from "./CollapsiblePromocodeField";
import PaymentMethodCard from "./PaymentMethodCard"; import PaymentMethodCard from "./PaymentMethodCard";
import { SorryModal } from "./SorryModal"; import { SorryModal } from "./SorryModal";
import { WarnModal } from "./WarnModal"; import { WarnModal } from "./WarnModal";
import { mutate } from "swr"; import { mutate } from "swr";
import { useCartStore } from "@root/stores/cart";
import { useDiffMoney } from "@root/stores/diffMoney";
type PaymentMethod = { type PaymentMethod = {
label: string; label: string;
@ -66,11 +68,14 @@ export default function Payment() {
const [fromSquiz, setIsFromSquiz] = useState<boolean>(false); const [fromSquiz, setIsFromSquiz] = useState<boolean>(false);
const location = useLocation(); const location = useLocation();
console.log("location", location); console.log("location", location);
console.log("location", location.state);
const verificationStatus = useUserStore((state) => state.verificationStatus); const verificationStatus = useUserStore((state) => state.verificationStatus);
const userId = useUserStore((state) => state.userId); const userId = useUserStore((state) => state.userId);
const navigate = useNavigate(); const navigate = useNavigate();
const handleCustomBackNavigation = useHistoryTracker(); const handleCustomBackNavigation = useHistoryTracker();
const {diffMoney, setNewDiff} = useDiffMoney()
const notEnoughMoneyAmount = const notEnoughMoneyAmount =
(location.state?.notEnoughMoneyAmount as number) ?? 0; (location.state?.notEnoughMoneyAmount as number) ?? 0;
@ -78,6 +83,14 @@ export default function Payment() {
bigDecimal.multiply(parseFloat(paymentValueField), 100) bigDecimal.multiply(parseFloat(paymentValueField), 100)
); );
useEffect(() => {
console.log(diffMoney)
if (diffMoney > 0) {
setNewDiff(0)
setPaymentValueField((diffMoney / 100).toString())
}
}, [diffMoney])
useLayoutEffect(() => { useLayoutEffect(() => {
setPaymentValueField((notEnoughMoneyAmount / 100).toString()); setPaymentValueField((notEnoughMoneyAmount / 100).toString());
const params = new URLSearchParams(window.location.search); const params = new URLSearchParams(window.location.search);
@ -89,7 +102,7 @@ export default function Payment() {
navigate(`/payment`, { navigate(`/payment`, {
replace: true, replace: true,
}); });
}, []); }, [ ]);
async function handleChoosePaymentClick() { async function handleChoosePaymentClick() {
if (!selectedPaymentMethod) { if (!selectedPaymentMethod) {

@ -16,10 +16,11 @@ const sliderSettingsByType = {
день: { max: 365, min: 0 }, день: { max: 365, min: 0 },
шаблон: { max: 5000, min: 0 }, шаблон: { max: 5000, min: 0 },
МБ: { max: 5000, min: 0 }, МБ: { max: 5000, min: 0 },
заявка: { max: 5000, min: 0 } заявка: { max: 5000, min: 0 },
шт: {max: 100, min: 0}
}; };
type PrivilegeName = "день" | "шаблон" | "МБ" | "заявка"; type PrivilegeName = "день" | "шаблон" | "МБ" | "заявка" | "шт";
interface Props { interface Props {
privilege: CustomPrivilege; privilege: CustomPrivilege;
@ -52,6 +53,8 @@ export default function TariffPrivilegeSlider({ privilege }: Props) {
); );
function handleSliderChange(measurement: PrivilegeName) { function handleSliderChange(measurement: PrivilegeName) {
console.log(measurement)
console.log(sliderSettingsByType)
return (value: number | number[]) => { return (value: number | number[]) => {
if (Number(value) < Number(sliderSettingsByType[measurement]?.min)) { if (Number(value) < Number(sliderSettingsByType[measurement]?.min)) {
@ -165,7 +168,16 @@ export default function TariffPrivilegeSlider({ privilege }: Props) {
min={sliderSettingsByType[privilege.value]?.min} min={sliderSettingsByType[privilege.value]?.min}
max={sliderSettingsByType[privilege.value]?.max || 100} max={sliderSettingsByType[privilege.value]?.max || 100}
onChange={handleSliderChange(privilege.value)} onChange={handleSliderChange(privilege.value)}
firstStep={privilege.value === "день" ? 30 : 100} firstStep={
(
privilege.value !== "день" &&
privilege.value !== "МБ" &&
privilege.value !== "заявка" &&
privilege.value !== "шаблон"
) ? 1
:
privilege.value === "день" ? 30 : 100
}
/> />
{!upMd && quantityElement} {!upMd && quantityElement}
</Box> </Box>

14
src/stores/diffMoney.ts Normal file

@ -0,0 +1,14 @@
import { HistoryRecord, HistoryRecord2 } from "@root/api/history";
import { create } from "zustand";
import { devtools, persist } from "zustand/middleware";
type DiffMoneyType = {
diffMoney: number;
setNewDiff: (diff: number) => void
};
export const useDiffMoney = create<DiffMoneyType>((set) => ({
diffMoney: 0,
setNewDiff: (diff: number) => set({diffMoney: diff})
}));