@@ -27,21 +27,12 @@ type SummarizeResponse = {
2727} ;
2828
2929const 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