Skip to content
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

[Feature] Add emoji reactions for all message types #14180

Closed
30 of 33 tasks
JmillsExpensify opened this issue Jan 10, 2023 · 76 comments
Closed
30 of 33 tasks

[Feature] Add emoji reactions for all message types #14180

JmillsExpensify opened this issue Jan 10, 2023 · 76 comments
Assignees
Labels
Internal Requires API changes or must be handled by Expensify staff Monthly KSv2 NewFeature Something to build that is a new item.

Comments

@JmillsExpensify
Copy link

JmillsExpensify commented Jan 10, 2023

Original P/S and project checklist ## Proposal Add Emoji Reactions for All Message Types

Problem
Text chat is very informational, but sometimes you want to participate in a way that is more emotional than informational -- to show support, comfort, disagreement, etc. In this case, a full-text message feels overkill, meaning oftentimes there is a desire to casually and emotionally participate that doesn’t clear the bar for a full-text message, and thus results in deciding not to participate at all.
Also, joining chats comes with an opportunity cost. You may get many notifications that distract you or you may get roped into conversations that you aren’t as passionate about. If you comment and someone replies, there’s a heightened expectation that you should reply back to them in a reasonable timeframe.

Solution
Let’s implement reactions into NewDot so users can react with emojis to any message type. Reactions became a standard in chatting apps as they offer a quick way to respond to messages and bring an additional layer of communication. They are also less distracting, as we don’t send notifications for reactions.

Design Doc https://docs.google.com/document/d/14VKy0ozcY_YVEmw0wV2ri_OBi7XNGUFVHhK3ei1MNWY/edit#heading=h.ns12dr1f35rx

Tasks

  • Post Proposal (full Problem/Solution statement) in #expensify-open-source (example)
  • Wait at least one full business day, and until the post has a majority (2/3) of positive reactions (👍)
  • Paste Proposal in the space above with a link to the Slack thread
  • Email strategy@expensify.com and paste in the Proposal
  • Fill out the High-level overview of the problem, Timeline, and Terminology sections of the Design Doc
  • Email strategy@expensify.com (continue the same email chain as before) with the link to your Design Doc
  • Host a pre-design meeting (example) in #expensify-open-source to discuss any necessary details in public before filling out the High-level of proposed solution section.
  • Fill out the High-level of proposed solution section
  • Email stategy@expensify.com again with links to the doc and pre-design conversation in Slack
  • Add the DesignDocReview label to get the High-level of proposed solution section reviewed
  • Respond to any questions or concerns and bring up blockers in Slack to get a consensus if necessary
  • Confirm that the doc has the minimum necessary number of reviews before proceeding
  • Host another pre-design meeting in #expensify-open-source to ask for engineering feedback on the technical solution.
  • Fill out the Detailed implementation of the solution and related sections.
  • Re-add the DesignDocReview label to this issue
  • Respond to any questions or concerns and bring up blockers in Slack to get consensus if necessary
  • Confirm that the doc has the minimum necessary number of reviews before proceeding
  • Email strategy@expensify.com one last time to let them know the Design Doc is moving into the implementation phase
  • Implement the changes
  • Send out a follow up email to strategy@expensify.com once everything has been implemented and do a Project Wrap-Up retrospective that provides:
    • Summary of what we accomplished with this project
    • What went well?
    • What could we have done better?
    • What did we learn?

GH Tracking:

Cleanup Issues:

@JmillsExpensify JmillsExpensify added Weekly KSv2 Internal Requires API changes or must be handled by Expensify staff NewFeature Something to build that is a new item. labels Jan 10, 2023
@melvin-bot melvin-bot bot locked and limited conversation to collaborators Jan 10, 2023
@JmillsExpensify
Copy link
Author

Copying over the pre-design notes from our in-person meeting in San Franciso.

Emoji Reactions Pre-design

  • Emoji is added via the comment action menu
    • Hover - option to add an emoji via the picker
    • Right-click on web - potentially showing the most-used emojis at the top above options
    • Long-press on mobile - Same as right click on web
  • Emoji reactions appear immediately below the message.
  • If emoji reactions already exist, add an emoji button inline.
  • Emojis are shown in the order that they are added.
  • Clicking on an emoji reaction adds it. Clicking on one you added removes it
  • We’ll use Pattern A for reactions on comments
  • If you react to certain emojis, those will appear blue/border
  • To see who reacted to an emoji…
    • Long-press - who selected the emoji is visible in the drawer, grouped by person sorted by time
    • Right click - Tooltip for that emoji, with the list of usernames that selected that emoji (fallback to phone/email)
    • Hover - Tooltip for that emoji, with the list of usernames that selected that emoji (fallback to phone/email)
  • We always list the person’s name that selected the emoji
  • For mobile, the height of the bottom-dock will be dynamic based on it’s comment
  • For mobile, the drawer will support swiping

Items that came up in discussion

  • What about emoji reaction limits? We won’t worry about this for now.
  • Should we notify on reactions? No (though we could change this in the future)
  • Can you react on every type of reportAction? Yes
  • Can you react to the welcome message? No
  • Should the chat become unread if you receive a reaction? No
  • Is a reaction a message (like WhatsApp or iMessage)? No

@Expensify Expensify unlocked this conversation Jan 10, 2023
@stitesExpensify stitesExpensify self-assigned this Jan 10, 2023
@JmillsExpensify JmillsExpensify self-assigned this Jan 11, 2023
@JmillsExpensify
Copy link
Author

Went ahead and added myself as the BZ helping push this forward.

@puneetlath
Copy link
Contributor

@Szymon20000 could you comment on this issue so that we can assign you? Thanks!

@Szymon20000
Copy link
Contributor

Sure!

@hannojg
Copy link
Contributor

hannojg commented Jan 17, 2023

@puneetlath Szymon and I are sharing the work on this one. Is it possible to assign me as well? Thanks 😊

@stitesExpensify
Copy link
Contributor

@Szymon20000 @hannojg FYI I just updated the OP to match our new Design Doc GH Issue template. It provides an outline of our internal process, and should help avoid any confusion that may be caused by the design doc itself. If you have any questions, obviously feel free to reach out to me or in #expensify-margelo!

@hannojg
Copy link
Contributor

hannojg commented Jan 18, 2023

Following the official procedure I posted a problem solution statement here

@hannojg
Copy link
Contributor

hannojg commented Jan 20, 2023

Can we please update the issue with the P/S Statement: https://expensify.slack.com/archives/C01GTK53T8Q/p1674214838372159?thread_ts=1674070038.007679&cid=C01GTK53T8Q

Thanks! 😊

@stitesExpensify
Copy link
Contributor

Done!

@hannojg
Copy link
Contributor

hannojg commented Jan 20, 2023

It also seems like I am unable to mail strategy@expensify.com? Can we whitelist the @margelo.io emails, or do you guys want to send out the emails?

@stitesExpensify edit: seems like it did go through now? 😅 are you able to confirm whether you guys got it?

// Double edit (sorry): its stuck in the outbox, so I think we're blocked

@stitesExpensify
Copy link
Contributor

stitesExpensify commented Jan 20, 2023

@hannojg I just confirmed that it is an internal only list. For now so that we can keep this moving I'll send it out for you while we get that changed.

If you want to post the contents of your email here, I will take care of it ASAP 😄

(edit: I'll CC Margelo@ as well)

@hannojg
Copy link
Contributor

hannojg commented Jan 20, 2023

Yes, that would be great, thx!

Title: [Feature proposal] Add Emoji Reactions for All Message Types

Problem
Text chat is very informational, but sometimes you want to participate in a way that is more emotional than informational -- to show support, comfort, disagreement, etc. In this case, a full-text message feels overkill, meaning oftentimes there is a desire to casually and emotionally participate that doesn’t clear the bar for a full-text message, and thus results in deciding not to participate at all.
Also, joining chats comes with an opportunity cost. You may get many notifications that distract you or you may get roped into conversations that you aren’t as passionate about. If you comment and someone replies, there’s a heightened expectation that you should reply back to them in a reasonable timeframe.

Solution
Let’s implement reactions into NewDot so users can react with emojis to any message type. Reactions became a standard in chatting apps as they offer a quick way to respond to messages and bring an additional layer of communication. They are also less distracting, as we don’t send notifications for reactions.

Slack thread: https://expensify.slack.com/archives/C01GTK53T8Q/p1674214838372159?thread_ts=1674070038.007679&cid=C01GTK53T8Q

@stitesExpensify
Copy link
Contributor

Strategy@ email was sent out today! We should be ready for the high level review on Monday

@Gonals
Copy link
Contributor

Gonals commented Jan 24, 2023

I have read and reviewed this Design Doc!

@stitesExpensify
Copy link
Contributor

High level design is ready for review!

@JmillsExpensify
Copy link
Author

Looks like we are getting close to that last issue still. See the linked PRs for more.

@melvin-bot melvin-bot bot removed the Overdue label Jun 21, 2023
@melvin-bot melvin-bot bot added the Overdue label Jun 29, 2023
@stitesExpensify
Copy link
Contributor

I'm still working on the final issue. The merge conflicts are off the charts on the original PR that @tgolen made. With all of the refactors etc I've decided to start a new PR and pull the changes over manually since so much has changed. Top priority next week.

@melvin-bot melvin-bot bot removed the Overdue label Jun 30, 2023
@melvin-bot melvin-bot bot added the Overdue label Jul 10, 2023
@stitesExpensify
Copy link
Contributor

I fixed all of the conflicts, but we found another breaking issue with regards to how we save skintones. I created a new issue and have a PR up for the fix, but it does mean we need to wait for another couple of deploys before we can move forward with the /app PR again.

@melvin-bot melvin-bot bot removed the Overdue label Jul 10, 2023
@melvin-bot melvin-bot bot added the Overdue label Jul 19, 2023
@stitesExpensify
Copy link
Contributor

We're almost done, waiting for one last review

@melvin-bot melvin-bot bot removed the Overdue label Jul 19, 2023
@melvin-bot melvin-bot bot added the Overdue label Jul 28, 2023
@stitesExpensify
Copy link
Contributor

Reactions are no longer disappearing when adding/removing quickly! We are finishing up some cleanup and then is finally finished!

@melvin-bot melvin-bot bot removed the Overdue label Aug 1, 2023
@JmillsExpensify
Copy link
Author

Woo! Great work all around.

@melvin-bot melvin-bot bot added the Overdue label Aug 10, 2023
@stitesExpensify
Copy link
Contributor

Still cleaning up

@melvin-bot melvin-bot bot removed the Overdue label Aug 15, 2023
@melvin-bot melvin-bot bot added the Overdue label Aug 24, 2023
@stitesExpensify
Copy link
Contributor

Still cleaning up

@melvin-bot melvin-bot bot removed the Overdue label Aug 24, 2023
@melvin-bot melvin-bot bot added the Overdue label Sep 4, 2023
@stitesExpensify
Copy link
Contributor

I think that we can close this. We are still cleaning up, but the feature is now complete and fully functional! I will continue to clean up the code as I have time, but this project is done. I'll send out an email soon!

@melvin-bot melvin-bot bot removed the Overdue label Sep 5, 2023
@melvin-bot melvin-bot bot added the Overdue label Sep 14, 2023
@stitesExpensify stitesExpensify added Monthly KSv2 and removed Weekly KSv2 labels Sep 19, 2023
@melvin-bot melvin-bot bot removed the Overdue label Sep 19, 2023
@JmillsExpensify
Copy link
Author

I'm with you. Let's close it out!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Internal Requires API changes or must be handled by Expensify staff Monthly KSv2 NewFeature Something to build that is a new item.
Projects
None yet
Development

No branches or pull requests