Skip to content

Commit 6b34d01

Browse files
authored
Merge pull request #26 from LuisMSuarez/refactor
Refactor review list queries and mutation handling
2 parents 065005e + 4192c78 commit 6b34d01

1 file changed

Lines changed: 15 additions & 22 deletions

File tree

packages/client/src/components/reviews/ReviewList.tsx

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -27,21 +27,12 @@ type SummarizeResponse = {
2727
};
2828

2929
const ReviewList = ({ productId }: Props) => {
30-
const {
31-
mutate: handleSummarize,
32-
isPending: generatingSummary,
33-
isSuccess: summaryRegenerated,
34-
isError: summaryGenError,
35-
} = useMutation<SummarizeResponse>({
30+
const reviewSummaryMutation = useMutation<SummarizeResponse>({
3631
mutationFn: () => generateSummary(),
3732
});
3833

39-
const {
40-
data: reviewData,
41-
isLoading,
42-
error,
43-
} = useQuery<GetReviewsResponse>({
44-
queryKey: ['reviews', productId, summaryRegenerated],
34+
const getReviewsQuery = useQuery<GetReviewsResponse>({
35+
queryKey: ['reviews', productId, reviewSummaryMutation.isSuccess],
4536
queryFn: () => fetchReviews(),
4637
});
4738

@@ -59,7 +50,7 @@ const ReviewList = ({ productId }: Props) => {
5950
return data;
6051
};
6152

62-
if (isLoading) {
53+
if (getReviewsQuery.isLoading) {
6354
return (
6455
<div className="flex flex-col gap-5">
6556
{[1, 2, 3].map((placeholder) => (
@@ -69,42 +60,44 @@ const ReviewList = ({ productId }: Props) => {
6960
);
7061
}
7162

72-
if (error) {
63+
if (getReviewsQuery.error) {
7364
return (
7465
<p className="text-red-500">
7566
Could not fetch reviews, please try again.
7667
</p>
7768
);
7869
}
7970

80-
if (!reviewData?.reviews.length) {
71+
if (!getReviewsQuery.data?.reviews.length) {
8172
return null;
8273
}
8374

8475
return (
8576
<div>
8677
<div id="summary" className="mb-5">
87-
{reviewData?.summary ? (
88-
<p>{reviewData.summary}</p>
89-
) : generatingSummary ? (
78+
{getReviewsQuery.data?.summary ? (
79+
<p>{getReviewsQuery.data?.summary}</p>
80+
) : reviewSummaryMutation.isPending ? (
9081
<div>
9182
<ReviewSkeleton />
9283
</div>
9384
) : (
9485
<Button
95-
onClick={() => handleSummarize()}
86+
onClick={() => reviewSummaryMutation.mutate()}
9687
className="cursor-pointer"
9788
>
9889
<HiSparkles className="text-yellow-400" />
9990
Summarize
10091
</Button>
10192
)}
102-
{summaryGenError && (
103-
<p className="text-red-500">{summaryGenError}</p>
93+
{reviewSummaryMutation.isError && (
94+
<p className="text-red-500">
95+
Could not generate review summary, please try again.
96+
</p>
10497
)}
10598
</div>
10699
<div id="reviewlist" className="flex flex-col gap-5">
107-
{reviewData?.reviews.map((review) => (
100+
{getReviewsQuery.data?.reviews.map((review) => (
108101
<div key={review.id}>
109102
<div className="font-semibold">{review.author}</div>
110103
<div>

0 commit comments

Comments
 (0)