status-im / design

Mozilla Public License 2.0
6 stars 3 forks source link

Mentions in chat #25

Closed errorists closed 3 years ago

errorists commented 6 years ago

What? Being able to mention somebody in a public chat. In a future, this should also happen in group chats.

Why? So the user can easily indicate that is talking to a specific person within the same chat instance.

Flow

SOME DEFINITIONS (WIP)

- How is the experience with anonymous names? What happens with contacts vs anonymous people A user should be able to see and mention another person based on their current situation as contacts.

Examples: Jenny wants to talk to Bob. She has him as part of her contacts (added). Jenny mentions Bob by typing his name "@Bob". Charles is also in the chat, but he doesn't have Bob as his contact. When Charles sees Jenny's mention, he sees Bob's anonymous name "Blue Little Milestone".

Charles wants to talk to Bob. He doesn't have Bob as part of his contacts. In order to mention him, Charles needs to type Bob's anonymous name "@BlueLittleMilestone". Jenny sees the mention "@Bob" , since she already has Bob as part of her contacts.

- What kind of mentions will be available?

- Order of contacts in list Users in the list could be ordered by recent activity. That means that people that participates the most are displayed first in the list (based on letters the user is typing, of course).

image

- What happens with mention's name on click We open the user's profile.

- What if I mention somebody on a 1:1 chat? Jenny is talking 1:1 to Bob. She mentions @Charles in the conversation. Since Charles is not Bob's contact, Bob sees his nickname "@BlueLittleMilestone". When clicking on the name, Bob sees Charles (BlueLittleMilestone) user profile with the options to add him as a contact or send him a message.

- What about contact codes? ENS usernames? All users should be able to mention somebody with their ENS Username. To be checked if everybody in a public chat can see an ENS username the same way.

- Also what if there are 5 Bob's in the channel? We show all the Bobs in the current chat, ordered by latest activity, with user image, and latest comment as a reference: image

- How does a user see all her mentions? For each mention received, the user should get a notification (push, web) announcing it. When clicking on it, she should be redirected to the specific message with the mention. There could also be a mention/activity section in the desktop app (à la Slack). Less of a priority for mobile.

-Which criteria do we use when searching for names? TBD Examples: Whatsapp

captura de pantalla 2018-09-10 a la s 4 55 00 p m

Slack

captura de pantalla 2018-09-10 a la s 5 02 05 p m

Platforms Mobile and desktop

Priority Medium

Feature request 👉 https://github.com/status-im/status-react/issues/4272

Example (not final):

screen_shot_2018-08-20_at_09 58 59
chadyj commented 6 years ago

How is the experience with annonymous names?

What about contact codes? ENS usernames?

Also what if there are 5 bob's in the channel?

Graeme-Code commented 6 years ago

@errorists on your design are the messages underneath the randomized name the last message they sent?

errorists commented 6 years ago

@Graeme-Code correct, I'm exploring options of adding further context to the names so that you can point to the right anonymised username with confidence. I'd be happy to hear other suggestions.

Graeme-Code commented 6 years ago

I think its difficult because a randomized name is not the easiest thing to remember, a blocky image is not a great identifier as well, so to understand who I am addressing in a public chat requires more context and I think what you have done helps greatly.

Looking at the design and the problem of interacting with randomized names/images, it seems the solution is to look for context attached to the randomized name, which makes me think that a reply interaction would be suited to facilitating interactions and mentions in public groups.

It means that a user, scrolls through the chat, identifies the message he/she wants to interact with, posts a reply linked to it which at the same time mentions the other user that their message has a reply.

errorists commented 6 years ago

@Graeme-Code Agree, we'll be introducing replies first, here's the GHI https://github.com/status-im/status-react/issues/4608 With mentions I feel like we may want to address the root of the issue first, allowing users to choose if they want to use their own usernames or the randomised ones.

chadyj commented 6 years ago

EugeOrtiz changed the title from Mentions in chat to Mentions in public chat 19 hours ago

I like how Slack can do mentioned in 1-1 chats, eg so I can say to @errorists:talk to @EugeOrtiz about the design and the app creates a link so that I can see her profile and start a chat with her. (but she obviously isn't pinged)

EugeOrtiz commented 6 years ago

I uploaded some designs for desktop (Zeplin) 👉zpl.io/aw1KLXj The main topic for discussion at this point I think is the anonymous vs contact situation and how complex it can get (or not).

@chadyj can we know who is in a channel if that person joined but never sent a message? Otherwise you will be able to mention (in a public chat) only people that wrote a message, right?

chadyj commented 6 years ago

can we know who is in a channel if that person joined but never sent a message?

No

@cammellos Can you add some tech colour to how we should treat mentions?

Otherwise you will be able to mention (in a public chat) only people that wrote a message, right?

Hmmm.... we also know people in contacts but also other chats. If I'm chatting in "#status" with personA, can I mention them in "#dapps"?

cammellos commented 6 years ago

can we know who is in a channel if that person joined but never sent a message? Otherwise you will be able to mention (in a public chat) only people that wrote a message, right?

Just to add, we could also auto-complete with the list of the user own contacts.

In terms of technical implementation it does not seem to present any problem, seems just a matter of enriching the text message with metadata or use some sort of markup language (md,html etc), so the conversation to have is whether we want to use something already existing or rollout our own etc, but can always be changed later on (mentions will always use the user pk and then substituted with the actual name or generated on receiving them)

@janherich has probably given some thoughts already about this I bet.

pedropombeiro commented 6 years ago

Will there be some kind of affordance for mentions on channels? I.e. if I'm on the chat home page, will I see a different type of "unread" marker showing me that I was mentioned in a specific chat?

errorists commented 6 years ago

@PombeirP good question! I'll look into it. Actually now that I think of it, I like the way Slack displays channel notifications: numbered badges are only used for mentions and channel names are just bolded for any new activity. I'd prefer that to our approach of counting every new message in the total counter.

errorists commented 6 years ago

so maybe something like this

screen shot 2018-09-12 at 11 57 53
EugeOrtiz commented 6 years ago

so maybe something like this

screen shot 2018-09-12 at 11 57 53

That wouldn't work on desktop, we use the highlight to show the current open chat. I'll try to also explore some options later.

lukaszfryc commented 6 years ago

so maybe something like this

screen shot 2018-09-12 at 11 57 53

I'd never figure out that "2" means 2 mentions and blue color means unread channel. How about just having channel title in bold font when there are new messages? Something that Slack has?

lukaszfryc commented 6 years ago

Other questions from my side:

  1. I really think we should solve the problem of confusion with anonymous names first. It seems to affect this feature a lot. cc @chadyj @hesterbruikman

  2. If I type “Tree” on the suggestion list, shall I see virtually all users in Whisper network with “Tree” in the name? Or maybe only users from all 1-1 and public chats I joined and my contacts?

  3. What happens when I open a chat where I’m both mentioned couple of times and there are lot of new messages. I suppose I should be scrolled to the first message someone mentioned me. If so, I may lose track of other unread messages that were sent first.

  4. What if someone has changed his custom name. Can I still mention them by the old name or at least by the default name?

errorists commented 6 years ago

I'd never figure out that "2" means 2 mentions and blue color means unread channel. How about just having channel title in bold font when there are new messages? Something that Slack has?

Yeah but this is exactly what Slack has, only the bold font (we already use it for titles) is substituted for a coloured background :) I get what you're saying, personally I see absolutely no utility in those numbered badges for public chats, mine are stuck on 9+ half the time. I'd much prefer a general new activity indication, but going the Slack route I figured we might as well use the badge for things directly related to you.

If I type “Tree” on the suggestion list, shall I see virtually all users in Whisper network with “Tree” in the name? Or maybe only users from all 1-1 and public chats I joined and my contacts?

I suppose you'd only be able to mention users who posted to this particular topic you're in, by their username that's currently visible to you and whoever's also in your contacts but not posted yet in the channel.

What happens when I open a chat where I’m both mentioned couple of times and there are lot of new messages. I suppose I should be scrolled to the first message someone mentioned me. If so, I may lose track of other unread messages that were sent first.

If you'd opened a chat just like that, you'd be scrolled to your last previous position. Tapping on a notification would scroll you to this particular mention instead.

errorists commented 5 years ago

Mobile designs https://www.figma.com/file/aS1ct66VQ6V0cio7vSqS8UoG/Chat?node-id=144%3A233

Figma
Figma
Created with Figma