Skip to content

Commit 919ee32

Browse files
committed
Add subscribeToMores
1 parent a10b80c commit 919ee32

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

‎src/components/ReviewList.js‎

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import Review from './Review'
66
import{
77
REVIEWS_QUERY,
88
ON_REVIEW_CREATED_SUBSCRIPTION,
9+
ON_REVIEW_UPDATED_SUBSCRIPTION,
10+
ON_REVIEW_DELETED_SUBSCRIPTION,
911
}from'../graphql/Review'
1012
import{cache}from'../lib/apollo'
1113

@@ -57,6 +59,51 @@ export default ({orderBy }) =>{
5759
})
5860
},[orderBy,subscribeToMore])
5961

62+
useEffect(()=>{
63+
subscribeToMore({
64+
document: ON_REVIEW_DELETED_SUBSCRIPTION,
65+
updateQuery: (prev,{ subscriptionData })=>{
66+
cache.modify({
67+
fields: {
68+
reviews(existingReviewRefs=[],{ readField }){
69+
constdeletedId=subscriptionData.data.reviewDeleted
70+
returnexistingReviewRefs.filter(
71+
(reviewRef)=>deletedId!==readField('id',reviewRef)
72+
)
73+
},
74+
},
75+
})
76+
returnprev
77+
},
78+
})
79+
},[orderBy,subscribeToMore])
80+
81+
useEffect(()=>{
82+
subscribeToMore({
83+
document: ON_REVIEW_UPDATED_SUBSCRIPTION,
84+
updateQuery: (prev,{ subscriptionData })=>{
85+
constupdatedReview=subscriptionData.data.reviewUpdated
86+
cache.writeFragment({
87+
id: cache.identify(updatedReview),
88+
data: updatedReview,
89+
fragment: gql`
90+
fragment UpdatedReview on Review{
91+
id
92+
text
93+
stars
94+
createdAt
95+
favorited
96+
author{
97+
id
98+
}
99+
}
100+
`,
101+
})
102+
returnprev
103+
},
104+
})
105+
},[orderBy,subscribeToMore])
106+
60107
constreviews=(data&&data.reviews)||[]
61108

62109
constonScroll=throttle(()=>{

0 commit comments

Comments
(0)