GetStream / stream-chat-react

React Chat SDK ➜ Stream Chat 💬
https://getstream.io/chat/sdk/react/
Other
697 stars 272 forks source link

bug: mentions in some scenarios doesn't work #2368

Open kennyvallejodev opened 5 months ago

kennyvallejodev commented 5 months ago

Describe the bug

A clear and concise description of what the bug is. There are some cases where the mentions don't work at all (it don't render the component as a mention)

https://github.com/GetStream/stream-chat-react/assets/42121336/94fa3eb0-7222-4b4a-ba1c-b54c82962e6a

https://github.com/GetStream/stream-chat-react/assets/42121336/e5a85311-2b5a-4662-8d8e-784fbd29c677

Creating the mention (and working) (by creating the video i found another problem :)))) okay guys i definitely need some help here to fix this. is driving me crazy)

https://github.com/GetStream/stream-chat-react/assets/42121336/103cc657-6171-45a6-bfe4-ef3cb1a0f0e2

Mentioning the same user but with a new name

https://github.com/GetStream/stream-chat-react/assets/42121336/7c4265d2-28f2-433c-84c0-f43491050888

To Reproduce

Steps to reproduce the behavior:

Scenarios [a] emote in name

  1. go to chat
  2. set your name as Kenny🟢)
  3. with another user in a channel where both user are members try to mention @Kenny🟢

[b] spaces in name

  1. go to chat
  2. set your name as Kenny.)
  3. with another user in a channel where both user are members try to mention @Kenny.

[b] old mention broken after same user change their name

  1. go to chat
  2. set your name as Kenny)
  3. with another user in a channel where both user are members try to mention @Kenny
  4. now as Kenny go again and change your name now to Kenny 2
  5. with the same other user, try to mention @Kenny 2
  6. The @Kenny 2 mention will work but the old @Kenny mention will stop working and will be displayed as a normal text

Expected behavior

A clear and concise description of what you expected to happen.

Screenshots

If applicable, add screenshots to help explain your problem.

Package version

Desktop (please complete the following information):

~Smartphone (please complete the following information):~

Additional context

arnautov-anton commented 5 months ago

Hey, @kennyvallejodev, thank you for your submission. The issue with the emote is a valid one, and we'll look into it.

On the other hand, the issue with trailing (or leading) spaces feels to me like a "data cleanup" issue that should be solved on the BE. Any trailing/leading spaces should be removed before updating the name, as I don't feel these provide any actual value.

The issue with the updated display name is a bit tricky as we match the mentioned user based on the display name that is being submitted as text. If the name in the message text is not updated then it's unlikely we can match the new name (from the mentioned_users array) to the old one. One way to mitigate this issue would be to mention users by their id's, thus always relying on somewhat permanent piece of data. The other way would be to use a Markdown form of sorts during message composition but that would come with the cost of other potential issues and unnecessarily lengthy messages (also an update from all of the other SDKs to handle this correctly):

Hey [@user display name](user_id) how are you doing?

Lastly, make BE update all the messages with mentions upon user display name change, but that seems unlikely as this might be expensive.

Again, thank you for your submission, we'll discuss this with the team and update this thread accordingly. 👍