update cache of ancestors on comment and upvote

This commit is contained in:
keyan 2022-09-01 16:53:39 -05:00
parent f65f6c1b28
commit 04d7e9c0ee
4 changed files with 30 additions and 7 deletions

View File

@ -186,7 +186,7 @@ export default function Comment ({
<div className={`${styles.children}`}>
{!noReply &&
<Reply
depth={depth + 1} parentId={item.id} replyOpen={replyOpen}
depth={depth + 1} item={item} replyOpen={replyOpen}
/>}
{children}
<div className={`${styles.comments} ml-sm-1 ml-md-3`}>

View File

@ -31,7 +31,7 @@ function BioItem ({ item, handleClick }) {
>edit bio
</Button>
</div>}
<Reply parentId={item.id} />
<Reply item={item} />
</>
)
}
@ -89,7 +89,7 @@ function TopLevelItem ({ item, noReply, ...props }) {
{item.text && <ItemText item={item} />}
{item.url && <ItemEmbed item={item} />}
{item.poll && <Poll item={item} />}
{!noReply && <Reply parentId={item.id} replyOpen />}
{!noReply && <Reply item={item} replyOpen />}
</ItemComponent>
)
}

View File

@ -21,10 +21,11 @@ export function ReplyOnAnotherPage ({ parentId }) {
)
}
export default function Reply ({ parentId, onSuccess, replyOpen }) {
export default function Reply ({ item, onSuccess, replyOpen }) {
const [reply, setReply] = useState(replyOpen)
const me = useMe()
const [hasImgLink, setHasImgLink] = useState()
const parentId = item.id
useEffect(() => {
setReply(replyOpen || !!localStorage.getItem('reply-' + parentId + '-' + 'text'))
@ -52,12 +53,21 @@ export default function Reply ({ parentId, onSuccess, replyOpen }) {
fragmentName: 'CommentsRecursive'
})
return [newCommentRef, ...existingCommentRefs]
},
ncomments (existingNComments = 0) {
return existingNComments + 1
}
}
})
// update all ancestors
item.path.split('.').forEach(id => {
cache.modify({
id: `Item:${id}`,
fields: {
ncomments (existingNComments = 0) {
return existingNComments + 1
}
}
})
})
}
}
)

View File

@ -135,6 +135,19 @@ export default function UpVote ({ item, className }) {
}
}
})
// update all ancestors
item.path.split('.').forEach(id => {
if (Number(id) === Number(item.id)) return
cache.modify({
id: `Item:${id}`,
fields: {
commentSats (existingCommentSats = 0) {
return existingCommentSats + sats
}
}
})
})
}
}
)