From 433a7258d5c619811eb2982005dee32ae783cfb0 Mon Sep 17 00:00:00 2001 From: hojpegmafia Date: Mon, 10 Aug 2026 20:18:22 +0900 Subject: [PATCH] =?UTF-8?q?[BugFix]=20=EB=B0=B0=EC=86=A1=EC=A7=80=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EB=AF=B8=EB=B0=98=EC=98=81=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/reward-page/reward-address-list-page.tsx | 13 +++++++------ src/pages/reward-page/reward-purchase-page.tsx | 6 +++++- src/store/rewardPurchaseStore.ts | 11 +++++++++++ 3 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 src/store/rewardPurchaseStore.ts diff --git a/src/pages/reward-page/reward-address-list-page.tsx b/src/pages/reward-page/reward-address-list-page.tsx index 5bc455e..aa1620c 100644 --- a/src/pages/reward-page/reward-address-list-page.tsx +++ b/src/pages/reward-page/reward-address-list-page.tsx @@ -10,10 +10,11 @@ import { deleteRewardAddress, getRewardAddressList, } from '../../apis/reward'; +import { useRewardPurchaseStore } from '../../store/rewardPurchaseStore'; export default function RewardAddressListPage() { const navigate = useNavigate(); - const [selectedAddressId, setSelectedAddressId] = useState(null); + const { selectedShippingAddressId, setSelectedShippingAddressId } = useRewardPurchaseStore(); const [deleteAddressId, setDeleteAddressId] = useState(null); const { data: addressList, @@ -26,7 +27,7 @@ export default function RewardAddressListPage() { const shippingAddresses = addressList ?? []; const effectiveSelectedAddressId = - selectedAddressId ?? + selectedShippingAddressId ?? shippingAddresses.find(({ isDefault }) => isDefault)?.shippingAddressId ?? shippingAddresses[0]?.shippingAddressId ?? null; @@ -36,9 +37,9 @@ export default function RewardAddressListPage() { const deleteAddressMutation = useMutation({ mutationFn: deleteRewardAddress, onSuccess: (_, deletedAddressId) => { - setSelectedAddressId((currentAddressId) => - currentAddressId === deletedAddressId ? null : currentAddressId, - ); + if (selectedShippingAddressId === deletedAddressId) { + setSelectedShippingAddressId(null); + }; queryClient.invalidateQueries({ queryKey: ['rewardAddressList'] }); }, onError: () => { @@ -87,7 +88,7 @@ export default function RewardAddressListPage() { key={shippingAddress.shippingAddressId} shippingAddressListResponse={shippingAddress} isSelected={effectiveSelectedAddressId === shippingAddress.shippingAddressId} - onSelect={() => setSelectedAddressId(shippingAddress.shippingAddressId)} + onSelect={() => setSelectedShippingAddressId(shippingAddress.shippingAddressId)} onEdit={() => navigate(`/reward/address-detail/${shippingAddress.shippingAddressId}/edit`)} onDelete={() => setDeleteAddressId(shippingAddress.shippingAddressId)} /> diff --git a/src/pages/reward-page/reward-purchase-page.tsx b/src/pages/reward-page/reward-purchase-page.tsx index 36d39de..9bcf366 100644 --- a/src/pages/reward-page/reward-purchase-page.tsx +++ b/src/pages/reward-page/reward-purchase-page.tsx @@ -17,6 +17,7 @@ import { import LoadingSpinner from '../../components/common/LoadingSpinner'; import FailInfo from '../../components/common/FailInfo'; import Modal from '../../components/common/Modal'; +import { useRewardPurchaseStore } from '../../store/rewardPurchaseStore'; interface PurchaseSectionProps { product: RewardProductDetail; @@ -91,6 +92,7 @@ function GifticonPurchaseSection({ } export default function RewardCheckoutPage() { + const { selectedShippingAddressId} = useRewardPurchaseStore(); const [receiverName, setReceiverName] = useState(''); const [receiverPhone, setReceiverPhone] = useState(''); const [isInsufficientPointModalOpen, setIsInsufficientPointModalOpen] = @@ -131,7 +133,9 @@ export default function RewardCheckoutPage() { enabled: isPartnerProduct, }); const selectedShippingAddress = - addressList?.find(({ isDefault }) => isDefault) ?? addressList?.[0] ?? null; + addressList?.find( + ({ shippingAddressId }) => shippingAddressId === selectedShippingAddressId, + ) ?? addressList?.find(({ isDefault }) => isDefault) ?? addressList?.[0] ?? null; const { mutate: purchaseReward, isPending: isPurchasing, diff --git a/src/store/rewardPurchaseStore.ts b/src/store/rewardPurchaseStore.ts new file mode 100644 index 0000000..ffb76a9 --- /dev/null +++ b/src/store/rewardPurchaseStore.ts @@ -0,0 +1,11 @@ +import {create} from "zustand"; + +interface RewardPurchaseState { + selectedShippingAddressId: number | null; + setSelectedShippingAddressId: (id: number | null) => void; +} + +export const useRewardPurchaseStore = create((set) => ({ + selectedShippingAddressId: null, + setSelectedShippingAddressId: (id) => set({selectedShippingAddressId: id}), +})); \ No newline at end of file