improve postCard data handling

This commit is contained in:
srgooglo 2022-10-12 00:01:22 +02:00
parent 59432a29a9
commit ee631595d7

View File

@ -17,6 +17,8 @@ export default React.memo(({
events = {}, events = {},
fullmode fullmode
}) => { }) => {
const isSelf = app.permissions.checkUserIdIsSelf(data.user_id)
const [loading, setLoading] = React.useState(true) const [loading, setLoading] = React.useState(true)
const [likes, setLikes] = React.useState(data.likes ?? []) const [likes, setLikes] = React.useState(data.likes ?? [])
@ -61,6 +63,15 @@ export default React.memo(({
return await events.onClickOpen(data) return await events.onClickOpen(data)
} }
const onClickEdit = async () => {
if (typeof events.onClickEdit !== "function") {
console.warn("onClickEdit event is not a function")
return
}
return await events.onClickEdit(data)
}
const onDataUpdate = (data) => { const onDataUpdate = (data) => {
console.log("onDataUpdate", data) console.log("onDataUpdate", data)
@ -82,6 +93,9 @@ export default React.memo(({
app.eventBus.emit("style.compactMode", true) app.eventBus.emit("style.compactMode", true)
} }
app.eventBus.on(`post.${data._id}.delete`, onClickDelete)
app.eventBus.on(`post.${data._id}.update`, onClickEdit)
// first listen to post changes // first listen to post changes
window.app.api.namespaces["main"].listenEvent(`post.dataUpdate.${data._id}`, onDataUpdate) window.app.api.namespaces["main"].listenEvent(`post.dataUpdate.${data._id}`, onDataUpdate)
@ -93,6 +107,9 @@ export default React.memo(({
app.eventBus.emit("style.compactMode", false) app.eventBus.emit("style.compactMode", false)
} }
app.eventBus.off(`post.${data._id}.delete`, onClickDelete)
app.eventBus.off(`post.${data._id}.update`, onClickEdit)
// remove the listener // remove the listener
window.app.api.namespaces["main"].unlistenEvent(`post.dataUpdate.${data._id}`, onDataUpdate) window.app.api.namespaces["main"].unlistenEvent(`post.dataUpdate.${data._id}`, onDataUpdate)
} }
@ -125,6 +142,9 @@ export default React.memo(({
{ ["noHide"]: !expansibleActions }, { ["noHide"]: !expansibleActions },
{ ["fullmode"]: fullmode }, { ["fullmode"]: fullmode },
)} )}
context-menu={"postCard-context"}
user-id={data.user_id}
self-post={isSelf.toString()}
> >
<div className="wrapper"> <div className="wrapper">
<PostHeader <PostHeader
@ -149,7 +169,7 @@ export default React.memo(({
} }
{!fullmode && {!fullmode &&
<PostActions <PostActions
isSelf={app.permissions.checkUserIdIsSelf(data.user_id)} isSelf={isSelf}
defaultLiked={hasLiked} defaultLiked={hasLiked}
defaultSaved={hasSaved} defaultSaved={hasSaved}
onClickLike={onClickLike} onClickLike={onClickLike}