стр пополнения берёт недостающую сумму из боковой корзины

This commit is contained in:
Nastya 2024-07-06 14:31:26 +03:00
parent 3b235db66a
commit 0740568a80
3 changed files with 34 additions and 2 deletions

@ -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) {

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})
}));