element-hq / element-web

A glossy Matrix collaboration client for the web.
https://element.io
GNU Affero General Public License v3.0
11.14k stars 1.98k forks source link

Tracking issue for Favourite Messages #22453

Closed andybalaam closed 1 year ago

andybalaam commented 2 years ago

Our Outreachy intern will be working on a prototype of favourite messages.

This is going to be an experiment, so we have freedom to work without needing designers to help us at every step, BUT it would be good to do something as close to what the final feature will look like as possible.

Design guidance

Here is the design guidance we have so far:

Draft timeline

Tech notes

yaya-usman commented 2 years ago

Below is a rough first draft wireframe/sketch video of what i intend achieving . I am open to inputs or more suggestions.

PS: It is subjected to change

https://user-images.githubusercontent.com/38439166/172411946-253a54d7-d466-49a3-bb3d-f64634b409f1.mp4

Here is a link to the wireframe as well: https://balsamiq.cloud/sjjlpb7/p1e0s5y

thoraj commented 2 years ago

Our users are asking for a way to "tag" and prioritize messages. This seems to be adressing a similar concern. The "starred" message is in effekt a message tagged with "starred".

At the risk of scope-creep, it would be great if the resulting data structures would support different (possibly custom) "tag-values" (in audition to 'starred'). This would allow extending the feature and GUI to support more generic tag/prioritize functionality.

acxz commented 2 years ago

To build on this idea each message can have two types of tags. One type of tag can be visible to everyone (the public facing tags can be assigned by people with the appropriate power level), and another tag could be assigned by and visible to you alone.

In fact, you can just build off the emojis, since users can create custom emojis (even with text) this is exactly a tag.

A use case of this is the following: Say I want to list all the messages that have the "interesting" emoji/tag. I can then see what the room thinks a "interesting" message is, or the message with the most "interesting". I could also see which messages I have personally thought to be "interesting".

mcg-matrix commented 2 years ago

At the risk of scope-creep, it would be great if the resulting data structures would support different (possibly custom) "tag-values" (in audition to 'starred'). This would allow extending the feature and GUI to support more generic tag/prioritize functionality.

I would like to mention that https://github.com/vector-im/element-meta/issues/319 contains thoughts and wishes on what users might want to be able to do if messages could get filtered (and then acted on) on "marks", "tags", "stars", or other properties (with "read status" being one such possible other property discussed in https://github.com/vector-im/element-meta/issues/347).

mhavelka commented 1 year ago

Hey guys, can I ask you if there is any progress on this feature since August? I can see the final step "Final Evaluation" is the only one missing and we are almost desperate to start using this.

My colleague just told me I should use e-mail when contacting her as she is lost in the Element in sense what "tasks" (chats) are waiting for her action and what not (= she cannot mark messages / chats in any way)

Thank you @andybalaam

andybalaam commented 1 year ago

Hi @mhavelka , thanks for your support on this!

I am actively working on this - I was hoping to get it done before end of 2022 but the code needed more work that I expected.

My progress is visible in this draft PR:

https://github.com/matrix-org/matrix-react-sdk/pull/9719

I need to write more tests, but the code is working for me.

Note that this comes with some caveats: it only works on Element Web, and it doesn't share your favourite messages with other devices (even other copies of Element Web). The idea is to extend it to share across all devices, but that is not being actively worked on right now.

mhavelka commented 1 year ago

@andybalaam Hey Andy, thanks a lot for your wonderful answer, trully appreciate your work.

I apologize for my lack of knowledge but Element Web and Element Desktop App (which should be Web running in some Electron?) is the same thing, is that right? So it will work in the Desktop app as well?

Caveats you mentioned are not the best but ... have something is better than have nothing.

andybalaam commented 1 year ago

@andybalaam Hey Andy, thanks a lot for your wonderful answer, trully appreciate your work.

Thank you!

I apologize for my lack of knowledge but Element Web and Element Desktop App (which should be Web running in some Electron?) is the same thing, is that right? So it will work in the Desktop app as well?

Yes, Element Desktop is an Electron wrapper around mostly the same code as Element Web, so this feature should work in Element Desktop too.

Caveats you mentioned are not the best but ... have something is better than have nothing.

:+1:

andybalaam commented 1 year ago

Sad news: it turns out the PR to make this into a reality needs a lot more work, and I'm not going to be able to squeeze this in between my work at the moment, so this is stalled :-(

Any help much appreciated! See the PR for details of what needs fixing: https://github.com/matrix-org/matrix-react-sdk/pull/9719

t3chguy commented 1 year ago

Closing in favour of https://github.com/vector-im/element-web/issues/24261 which better scopes the remaining work