-
Notifications
You must be signed in to change notification settings - Fork 126
[C-4939] Add comment action menu popup #9472
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
…jd/comments-action-menu
…jd/comments-action-menu # Conflicts: # packages/web/src/components/comments/CommentBlock.tsx # packages/web/src/components/comments/CommentSectionDesktop.tsx
|
Preview this change https://demo.audius.co/jd/comments-action-menu |
| const prevDeleteStatus = usePrevious(deleteStatus) | ||
| useEffect(() => { | ||
| if (prevDeleteStatus !== deleteStatus && deleteStatus !== Status.LOADING) { | ||
| setIsDeleting(false) | ||
| } | ||
| }, [deleteStatus, prevDeleteStatus]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've done this quite a few times already, probably makes sense to update aquery to have some sort of callback like onStatusChange or like onFetchFinish or something instead doing it manually like this 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually in hindsight the reason I have to do this is so that I can handle individual load states vs global ones (i.e. one comment delete status). Maybe this is just a side-effect of sharing the useAQueryHook in context vs using it at each component.
Hmmm
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it make sense to write useDeleteComment as a standalone hook that reaches into the comment context, instead of sharing the hook itself via the comment context? Like this:
const useDeleteComment = () => {
const { userId, entityId } = useCurrentCommentSection()
const [deleteComment, deleteCommentResponse] = useDeleteCommentById()
const wrappedHandler = async (commentId: string) => {
if (userId) {
deleteComment({ id: commentId, userId, entityId })
}
}
return [wrappedHandler, deleteCommentResponse]
}There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah maybe this is the move. Let me see how this feels instead
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yea ok thats the way to go, I changed the delete to this and it worked as expected 👌
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will change the others later on 💯
Feel free to change them next week while I'm on call if you need
sliptype
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome! I'll probably copy CommentActionBar into mobile too
| Reply | ||
| </TextLink> | ||
|
|
||
| <PopupMenu |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would assume they want the popup aligned left bottom similar to our track tile overflow menus
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll add it to a list of qa things to have design look at 👀 Planning to do some early desktop design QA soon
| const prevDeleteStatus = usePrevious(deleteStatus) | ||
| useEffect(() => { | ||
| if (prevDeleteStatus !== deleteStatus && deleteStatus !== Status.LOADING) { | ||
| setIsDeleting(false) | ||
| } | ||
| }, [deleteStatus, prevDeleteStatus]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it make sense to write useDeleteComment as a standalone hook that reaches into the comment context, instead of sharing the hook itself via the comment context? Like this:
const useDeleteComment = () => {
const { userId, entityId } = useCurrentCommentSection()
const [deleteComment, deleteCommentResponse] = useDeleteCommentById()
const wrappedHandler = async (commentId: string) => {
if (userId) {
deleteComment({ id: commentId, userId, entityId })
}
}
return [wrappedHandler, deleteCommentResponse]
}|
Preview this change https://demo.audius.co/jd/comments-action-menu |
…jd/comments-action-menu # Conflicts: # packages/common/src/context/commentsContext.tsx # packages/mobile/src/components/comments/CommentDrawer.tsx # packages/mobile/src/components/comments/CommentSection.tsx # packages/mobile/src/screens/track-screen/TrackScreenMainContent.tsx # packages/web/src/components/comments/CommentBlock.tsx
|
Preview this change https://demo.audius.co/jd/comments-action-menu |
[d712b07] [C-4939] Add comment action menu popup (#9472) JD Francis [641c9c1] [C-4940] Add comment badges (desktop web) (#9475) JD Francis [aca7b5c] [PAY-3315][PAY-3316][PAY-3323] Staking bridge (#9408) Saliou Diallo [bdc139a] [C-4828] Add timestamp features to comments (#9455) JD Francis [3457aeb] [QA-1504] Fix payout wallet set default (#9467) Raymond Jacobson [8c127d0] Add comment replies pagination (#9435) Isaac Solo [c5e250e] [C-4929] Add SendIcon component to harmony and harmony native (#9422) Kyle Shanks [a17b30e] Hook up client blast params to sdk (#9466) Reed [11bf6e3] Don't decrypt plaintext chat.last_message (#9470) Reed [bcaebb0] fix TS error (#9468) JD Francis [bb802b7] Optimistic add chat blasts (#9463) Reed [b5de040] Fix bad claimable challenge state due to nullable max_steps (#9461) Randy Schott [d4c34c3] Fix comment delete in audius-query (#9462) JD Francis [95380d8] [C-4800] Scaffolding for mobile comments (#9449) Sebastian Klingler [fbb4256] [PAY-2917] Migrate user endpoints to SDK, round 3 (#9432) Randy Schott [2c1679a] [PAY-3307] Upgrade chat blasts to chats in sdk (V2) (#9453) Reed [279a9b2] More explicit audience columns for chat blast. (#9454) Steve Perkins [acb857e] Fix bug in profile page 404 (#9456) Raymond Jacobson [c382e82] Don't decrypt plaintext messages (#9448) Reed [172f172] [QA-1495] Fix 404 for users (#9451) Raymond Jacobson [82ab743] [PAY-3227] Unfurl tracks in composer (#9434) Raymond Jacobson [363af71] Compose Solana Client in SDK (#9441) Marcus Pasell [83260f6] Create ChatBlast from web (#9447) Andrew Mendelsohn [19e3bdf] [PAY-3341] Add is_plaintext field for chat message (#9442) Steve Perkins [e25c679] Rename Targeted Message to Chat Blast (#9443) Reed [fc0604c] [C-4964] Comment header changes (#9444) JD Francis [f9e4525] [PAY-3310] Chat blast function in sdk (#9436) Reed [910b655] Move comments context to common (#9440) JD Francis [bb5eaa1] [C-4910] Comments replys & deletes fixes (#9437) JD Francis [1072f5a] [PAY-3106][PAY-2914] Use SDK to withdraw USDC (#9419) Marcus Pasell [1b7bd47] Add social signup feature flag (#9439) Sebastian Klingler [4130f42] Fix duplicate error name in sentry (#9430) Marcus Pasell [54a5a78] [PAY-3300] Chat blast: lazy create thread (#9424) Steve Perkins [ca71d76] [C-4910] Audius-query-ify comments state management (#9423) JD Francis [20a55e9] [PAY-2917][QA-1466] Migrate more users endpoints (#9308) Randy Schott [ab38869] [QA-1434] Fix hanging uploads due to errors on mobile (#9420) Randy Schott [f6ab71c] Add buy button metrics (#9428) Isaac Solo [06ee8a1] Fix pagination args (#9425) Isaac Solo [b91437a] [QA-1501] Fix mobile search input (#9426) Sebastian Klingler [a3c15fd] [C-4932] Add CommentBody component to harmony and harmony-native (#9415) Kyle Shanks
Description
Replaces the placeholder icon buttons with an action menu like designs have.
Also set up the permissions to show options accordingly.
I also tweaked the deleting UI to show half opacity while deleting. Imo it looks pretty nice 👌
How Has This Been Tested?
web:stage