Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Add ability to mark messages unread #5601

Open
nunoperalta opened this issue Jul 2, 2019 · 23 comments
Open

Add ability to mark messages unread #5601

nunoperalta opened this issue Jul 2, 2019 · 23 comments
Labels
T-Enhancement New features, changes in functionality, improvements in performance, or user-facing enhancements.

Comments

@nunoperalta
Copy link

This is being discussed here for Riot:
vector-im/riot-web#4406

The only blocker at the moment for Riot is that synapse only ever let's the "unread" pointer move forward.

This needs an MSC so that it's in the spec and not specific to riot/synapse.

Slack, Facebook Messenger, WhatsApp, Skype, Linked In, Signal, and pretty much every other email/chat client I know, have Mark as Unread, and some of them (like Skype and Slack) allow to choose which message to move the unread pointer to.

Thank you.

@colans
Copy link

colans commented Jul 2, 2019

Just to correct the description above, Signal does not yet support this either.

@neilisfragile neilisfragile added z-feature (Deprecated Label) z-p2 (Deprecated Label) labels Jul 3, 2019
@neilisfragile
Copy link
Contributor

Agreed that the way to make progress here is to propose an MSC

@MurzNN
Copy link

MurzNN commented Jul 18, 2019

Why this feature can't be implemented using current m.fully_read marker?

Matrix client will send read_markers event to room with event id, selected by user:

{
  "m.fully_read": "$needed_event_id:domain.com",
  "m.read": "$needed_event_id:domain.com"
}

and read marker will move back to needed position! Not?

@anoadragon453
Copy link
Member

Why this feature can't be implemented using current m.fully_read marker?

Matrix client will send read_markers event to room with event id, selected by user:

{
  "m.fully_read": "$needed_event_id:domain.com",
  "m.read": "$needed_event_id:domain.com"
}

and read marker will move back to needed position! Not?

Tried testing this but my homeserver claimed my restclient closed the connection too quickly, whereas restclient got a 200. So... maybe?

@jryans
Copy link
Contributor

jryans commented Aug 5, 2019

At the moment, Synapse appears to only move the read marker forward. (It might return a 200 even if not updated, perhaps a bug...)

if existing_read_marker:
# Only update if the new marker is ahead in the stream
should_update = yield self.store.is_event_after(
event_id, existing_read_marker["event_id"]
)

I can't find specific spec text that says that receipts and markers only move forward, but it seems somewhat implied by the current definition of a read marker.

Given all this, it does seem like an MSC would be best.

@anoadragon453
Copy link
Member

Thanks for investigating @jryans. You're right in that the spec's definition is currently a little vague, and an MSC is a good place to both update and get feedback on whether it's the right direction to take.

Will make one and take the discussion there, thanks!

@MurzNN
Copy link

MurzNN commented Aug 5, 2019

We can continue not allow m.read markers to jump backward, because, as I understand, they used for render public read markers in room, and allow to jump backward only m.fully_read marker, for use it only for personal needs?

@anoadragon453
Copy link
Member

We can continue not allow m.read markers to jump backward, because, as I understand, they used for render public read markers in room, and allow to jump backward only m.fully_read marker, for use it only for personal needs?

Good point, we don't want to leak to people that we're marking messages as unread. I wonder how easy they are to uncouple...

@nunoperalta
Copy link
Author

nunoperalta commented Aug 5, 2019

This is just my opinion, but honestly, I WISH other people could know when I mark their message unread, on Whatsapp and everywhere else.

The reason is that many times I see the message, but mark as unread so that I can come back to it later.
However, other people not seeing that I marked it as unread again will think I purely ignored them, when I'm actually NOT ignoring them and want to come back to them later - hence I marked as unread.

@anoadragon453
Copy link
Member

Hrm, true. Perhaps then we can be generic enough such that clients can choose to move the public read marker or not.

@nunoperalta
Copy link
Author

It could be a setting, I guess...

Or two buttons: "Mark as Unread (Private)" / "Mark as Unread (Disclose)"

@MurzNN
Copy link

MurzNN commented Aug 5, 2019

Ideally will be good to see both info on sender side - when user receive message (act on notification and opens message), and fully read them (with ability to mark as unread on receiver side if he has no time to read now).

@brainscar
Copy link

At the moment, Synapse appears to only move the read marker forward. (It might return a 200 even if not updated, perhaps a bug...)

@jryans wow I literally came to this repo to report this exact bug. Do you know if there's a bug report for it yet? Basically it's exactly how you describe it. The marker doesn't update in riot but it's reported as 200.

@jryans
Copy link
Contributor

jryans commented Sep 4, 2019

@jryans wow I literally came to this repo to report this exact bug. Do you know if there's a bug report for it yet? Basically it's exactly how you describe it. The marker doesn't update in riot but it's reported as 200.

I am not aware of one so far... Please feel free to file one, I would assume here in the Synapse repo.

@anoadragon453
Copy link
Member

We 200 the request as the state afterwards remains the same. The spec does not currently specify any required error codes other than 200/429: https://matrix.org/docs/spec/client_server/unstable#post-matrix-client-r0-rooms-roomid-read-markers

@nunoperalta
Copy link
Author

Any update on this?

@anoadragon453
Copy link
Member

Not for this problem particularly, but matrix-org/matrix-spec-proposals#2285 may allow a client to provide the desired behaviour.

@turt2live
Copy link
Member

2285 is unrelated to this.

@nunoperalta
Copy link
Author

Any update on this?
This has been asked already since 2017, in element-hq/element-meta#347 ...
This is one of the most basic features a Chat system like this needs to have.
Thank you.

@NoaJou
Copy link

NoaJou commented Jun 21, 2021

As OP says, this is quite a basic feature which should be added. Would love to see if this can be implemented in future versions of the app.

@erikjohnston erikjohnston added T-Enhancement New features, changes in functionality, improvements in performance, or user-facing enhancements. and removed z-feature (Deprecated Label) z-p2 (Deprecated Label) labels Jun 21, 2021
@richvdh
Copy link
Member

richvdh commented Mar 7, 2022

dup element-hq/element-web#2632

@richvdh richvdh closed this as completed Mar 7, 2022
@colans
Copy link

colans commented Mar 7, 2022

@richvdh Hang on a second though. I agree that it makes sense to implement this on the server side, but the client still need to add some functionality in order to take advantage of it, specifically it has to allow the user to determine where to stick the marker.

So wouldn't it make sense to postpone this issue on the server one, and then unpostpone it when that one is complete? But let's keep it open as there's still work to do here (unless I'm missing something).

@richvdh
Copy link
Member

richvdh commented Mar 7, 2022

I'm not following what you're saying, but on closer inspection, this is unrelated to element-hq/element-web#2632.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
T-Enhancement New features, changes in functionality, improvements in performance, or user-facing enhancements.
Projects
None yet
Development

No branches or pull requests