nextcloud / spreed

🗨️ Nextcloud Talk – chat, video & audio calls for Nextcloud

Home Page:https://nextcloud.com/talk

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Two check marks although read-status not shared

bentuna opened this issue · comments

Steps to reproduce

  1. Create a conversation between
  • User A (with "Share my read-status and show the read-status of others" enabled) and
  • User B (with "Share my read-status and show the read-status of others" disabled)
  1. Send messages in both directions inside that conversation.
  2. See how messages sent from User A to User B get two checkmarks inside the chat view of User A immediately.

Expected behaviour

User A should only see one checkmark, because User B does not share their read-status.

Actual behaviour

User A always gets two checkmarks on their messages, no matter if User B has actually read them or not. User A cannot know if User B shares their read-status or not, so User A would think that User B has read their messages immediately. This is very confusing.

Talk app

Talk app version: 18.0.9

Server configuration

Nextcloud Version: 28.0.7

User A should only see one checkmark, because User B does not share their read-status.

I can see how that could be useful, but the read tracking works differently on a technical level.
It basically uses the oldest message of all users that share their read status, which in your sample is "User A" only. So all users read the message => double checkmark.

This is also how it behaves in group conversations, otherwise as soon as there is 1 user without shared read-status the feature would no longer work at all and all messages would always be unread.

It basically uses the oldest message of all users that share their read status

Okay, but shouldn't it be "all users that share their read status except the sender of the message"?

That should solve the issue here without changing the behavior in group conversations, right?

While that would work, it makes it more difficult to cache as the cache result would depend on the user. So we would need a cache per user.