From 3b235db66a1fc45c8bde6dbe8b563d626ad2b988 Mon Sep 17 00:00:00 2001 From: Nastya Date: Thu, 27 Jun 2024 17:25:33 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D1=80=D0=B5=D1=88=D0=B5=D0=BD=20undefined?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=D0=B2=D0=B8=D0=BB=D0=B5=D0=B3=D0=B8=D0=B8?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BA=D0=B2=D0=B8=D0=B7=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/CustomSlider.tsx | 1 + src/pages/TariffConstructor/TariffItem.tsx | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/components/CustomSlider.tsx b/src/components/CustomSlider.tsx index e0aae16..4028807 100644 --- a/src/components/CustomSlider.tsx +++ b/src/components/CustomSlider.tsx @@ -20,6 +20,7 @@ export const CustomSlider = ({ const [step, setStep] = useState(1) useEffect(() => { + if (firstStep === 1) return setStep(1) if (value <= firstStep) { return setStep(firstStep) } diff --git a/src/pages/TariffConstructor/TariffItem.tsx b/src/pages/TariffConstructor/TariffItem.tsx index 5aa3256..6f2a239 100644 --- a/src/pages/TariffConstructor/TariffItem.tsx +++ b/src/pages/TariffConstructor/TariffItem.tsx @@ -16,10 +16,11 @@ const sliderSettingsByType = { день: { max: 365, 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 { privilege: CustomPrivilege; @@ -52,6 +53,8 @@ export default function TariffPrivilegeSlider({ privilege }: Props) { ); function handleSliderChange(measurement: PrivilegeName) { + console.log(measurement) + console.log(sliderSettingsByType) return (value: number | number[]) => { if (Number(value) < Number(sliderSettingsByType[measurement]?.min)) { @@ -165,7 +168,16 @@ export default function TariffPrivilegeSlider({ privilege }: Props) { min={sliderSettingsByType[privilege.value]?.min} max={sliderSettingsByType[privilege.value]?.max || 100} 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} From 0740568a80d1671b32c927c4e5d772ca0f155158 Mon Sep 17 00:00:00 2001 From: Nastya Date: Sat, 6 Jul 2024 14:31:26 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D1=81=D1=82=D1=80=20=D0=BF=D0=BE=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B1=D0=B5=D1=80?= =?UTF-8?q?=D1=91=D1=82=20=D0=BD=D0=B5=D0=B4=D0=BE=D1=81=D1=82=D0=B0=D1=8E?= =?UTF-8?q?=D1=89=D1=83=D1=8E=20=D1=81=D1=83=D0=BC=D0=BC=D1=83=20=D0=B8?= =?UTF-8?q?=D0=B7=20=D0=B1=D0=BE=D0=BA=D0=BE=D0=B2=D0=BE=D0=B9=20=D0=BA?= =?UTF-8?q?=D0=BE=D1=80=D0=B7=D0=B8=D0=BD=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Drawers.tsx | 5 +++++ src/pages/Payment/Payment.tsx | 17 +++++++++++++++-- src/stores/diffMoney.ts | 14 ++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 src/stores/diffMoney.ts diff --git a/src/components/Drawers.tsx b/src/components/Drawers.tsx index ab88653..0a94792 100644 --- a/src/components/Drawers.tsx +++ b/src/components/Drawers.tsx @@ -20,6 +20,7 @@ import { withErrorBoundary } from "react-error-boundary"; import { handleComponentError } from "@root/utils/handleComponentError"; import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline"; import { setNotEnoughMoneyAmount, useCartStore } from "@root/stores/cart"; +import { useDiffMoney } from "@root/stores/diffMoney"; function Drawers() { const [openNotificationsModal, setOpenNotificationsModal] = useState(false); @@ -35,6 +36,7 @@ function Drawers() { const userAccount = useUserStore((state) => state.userAccount); const tickets = useTicketStore((state) => state.tickets); const notEnoughMoneyAmount = useCartStore(state => state.notEnoughMoneyAmount); + const { setNewDiff } = useDiffMoney() const notificationsCount = tickets.filter( ({ user, top_message }) => user !== top_message.user_id && top_message.shown.me !== 1 @@ -67,6 +69,9 @@ function Drawers() { function handleReplenishWallet() { setIsDrawerOpen(false); + if (location.pathname.includes("/payment")) { + setNewDiff(notEnoughMoneyAmount) + } navigate("/payment", { state: { notEnoughMoneyAmount } }); } diff --git a/src/pages/Payment/Payment.tsx b/src/pages/Payment/Payment.tsx index e2e17f9..88bb214 100644 --- a/src/pages/Payment/Payment.tsx +++ b/src/pages/Payment/Payment.tsx @@ -25,13 +25,15 @@ import { currencyFormatter } from "@root/utils/currencyFormatter"; import { useHistoryTracker } from "@root/utils/hooks/useHistoryTracker"; import { cardShadow } from "@root/utils/theme"; import { enqueueSnackbar } from "notistack"; -import { useLayoutEffect, useState } from "react"; +import { useEffect, useLayoutEffect, useState } from "react"; import { useLocation, useNavigate } from "react-router-dom"; import CollapsiblePromocodeField from "./CollapsiblePromocodeField"; import PaymentMethodCard from "./PaymentMethodCard"; import { SorryModal } from "./SorryModal"; import { WarnModal } from "./WarnModal"; import { mutate } from "swr"; +import { useCartStore } from "@root/stores/cart"; +import { useDiffMoney } from "@root/stores/diffMoney"; type PaymentMethod = { label: string; @@ -66,11 +68,14 @@ export default function Payment() { const [fromSquiz, setIsFromSquiz] = useState(false); const location = useLocation(); console.log("location", location); + console.log("location", location.state); const verificationStatus = useUserStore((state) => state.verificationStatus); const userId = useUserStore((state) => state.userId); const navigate = useNavigate(); const handleCustomBackNavigation = useHistoryTracker(); + const {diffMoney, setNewDiff} = useDiffMoney() + const notEnoughMoneyAmount = (location.state?.notEnoughMoneyAmount as number) ?? 0; @@ -78,6 +83,14 @@ export default function Payment() { bigDecimal.multiply(parseFloat(paymentValueField), 100) ); + useEffect(() => { + console.log(diffMoney) + if (diffMoney > 0) { + setNewDiff(0) + setPaymentValueField((diffMoney / 100).toString()) + } + }, [diffMoney]) + useLayoutEffect(() => { setPaymentValueField((notEnoughMoneyAmount / 100).toString()); const params = new URLSearchParams(window.location.search); @@ -89,7 +102,7 @@ export default function Payment() { navigate(`/payment`, { replace: true, }); - }, []); + }, [ ]); async function handleChoosePaymentClick() { if (!selectedPaymentMethod) { diff --git a/src/stores/diffMoney.ts b/src/stores/diffMoney.ts new file mode 100644 index 0000000..2e3a49a --- /dev/null +++ b/src/stores/diffMoney.ts @@ -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((set) => ({ + diffMoney: 0, + setNewDiff: (diff: number) => set({diffMoney: diff}) + }));