Skip to content

Commit 79cbbf1

Browse files
fix prices not updating on region change (#117)
1 parent 97481f0 commit 79cbbf1

File tree

4 files changed

+9520
-7291
lines changed

4 files changed

+9520
-7291
lines changed

.yarnrc.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
nodeLinker: node-modules

src/lib/hooks/use-product-price.tsx

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { formatAmount, useCart, useProducts } from "medusa-react"
2-
import { useMemo } from "react"
2+
import { useEffect, useMemo } from "react"
33
import { CalculatedVariant } from "types/medusa"
44

55
type useProductPriceProps = {
@@ -10,14 +10,20 @@ type useProductPriceProps = {
1010
const useProductPrice = ({ id, variantId }: useProductPriceProps) => {
1111
const { cart } = useCart()
1212

13-
const { products, isLoading, isError } = useProducts(
13+
const { products, isLoading, isError, refetch } = useProducts(
1414
{
1515
id: id,
1616
cart_id: cart?.id,
1717
},
18-
{ enabled: !!cart }
18+
{ enabled: !!cart?.id && !!cart?.region_id }
1919
)
2020

21+
useEffect(() => {
22+
if (cart?.region_id) {
23+
refetch()
24+
}
25+
}, [cart?.region_id, refetch])
26+
2127
const product = products?.[0]
2228

2329
const getPercentageDiff = (original: number, calculated: number) => {
@@ -55,7 +61,7 @@ const useProductPrice = ({ id, variantId }: useProductPriceProps) => {
5561
cheapestVariant.calculated_price
5662
),
5763
}
58-
}, [product, cart])
64+
}, [product, cart?.region])
5965

6066
const variantPrice = useMemo(() => {
6167
if (!product || !variantId || !cart?.region) {
@@ -87,7 +93,7 @@ const useProductPrice = ({ id, variantId }: useProductPriceProps) => {
8793
variant.calculated_price
8894
),
8995
}
90-
}, [product, variantId, cart])
96+
}, [product, variantId, cart?.region])
9197

9298
return {
9399
product,

src/modules/collections/templates/index.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import repeat from "@lib/util/repeat"
44
import ProductPreview from "@modules/products/components/product-preview"
55
import SkeletonProductPreview from "@modules/skeletons/components/skeleton-product-preview"
66
import { fetchCollectionProducts } from "@pages/collections/[id]"
7+
import { useInfiniteQuery } from "@tanstack/react-query"
78
import { useCart } from "medusa-react"
89
import React, { useEffect } from "react"
910
import { useInView } from "react-intersection-observer"
10-
import { useInfiniteQuery } from "@tanstack/react-query"
1111

1212
type CollectionTemplateProps = {
1313
collection: {
@@ -28,6 +28,7 @@ const CollectionTemplate: React.FC<CollectionTemplateProps> = ({
2828
fetchNextPage,
2929
isFetchingNextPage,
3030
isLoading,
31+
refetch,
3132
} = useInfiniteQuery(
3233
[`get_collection_products`, collection.id, cart?.id],
3334
({ pageParam }) =>
@@ -41,6 +42,12 @@ const CollectionTemplate: React.FC<CollectionTemplateProps> = ({
4142
}
4243
)
4344

45+
useEffect(() => {
46+
if (cart?.region_id) {
47+
refetch()
48+
}
49+
}, [cart?.region_id, refetch])
50+
4451
const previews = usePreviews({
4552
pages: infiniteData?.pages,
4653
region: cart?.region,

0 commit comments

Comments
 (0)