Meeds-io / MIPs

The Meeds Improvement Proposal repository
0 stars 0 forks source link

Notifications User - Upgrade UI #80

Closed srenault-meeds closed 1 year ago

srenault-meeds commented 1 year ago

Rationale

Notifications UI is not consistent with other platform UI. Indeed, the following page is not accurate with what is expected to see:

In addition to the fact that UX is not the best here:

1. Functional Requirements

The UI will be updated to make sure it is consistent with other UI in the platform.

When the user access the all notifications page OR when the user expands the notifications drawer, notifications will be listed the following way:

image

Categorization of notifications by type to help the user filter it if needed

image

Grouping notifications when multiple likes are done will be kept as is However, grouping notifications when mulitple comments to an activity will be removed to avoid losing context of answers AND we suggest to remove the autowatch behaviour proposed when liking or commenting an activity. -> Indeed, to avoid users getting notifications for an activity they have liked each time someone comments OR for an activity they have commented each time someone adds a comment (not a reply), this autowatch will be replaced by a manual watch option. This option will be proposed to users from the three dots so they can decide to receive notifications for activities they want to watch.

N.B: We already have identified that following notifications UX needs to be improved:

  • mute space
  • mute notification
  • filter unread activities using stream filters
  • quick action from the drawer: mark as unread, delete, etc. These new UX items will be done in another MIP

2. Technical Requirements

Extensibility

The notification UI has to be moved from Server End to Front End by replacing gtmpl based notification UI into a Vue.js/Vuetify based UIs. To not break the existing notifications system, we will have to preserve the possibility to define a notification using both systems until all Meeds DAO members makes the upgrade smoothly.

Upgradability

An upgrade has to be be done to introduce a new Notification for all users with default settings (All channels enabled by default). The New Plugin to introduce is ActivityCommentWatchPlugin.

Existing Features

The current UI which uses WebUI has to be changed into Vue.js/Vuetify based application.

Feature Flags

No Feature flag is needed.

4. Software Architecture

Access

Services & processing

A new API to allow watching objects, based on Metadata API, will be implemented to allow watching any type of objects. The first use case for this API is to allow users to watch activities through a button in order to receive notification when comments are introduced on the activity.

This API will rely on the same extensibility system as for:

In fact, the Metadata API allows to attach metadata information related to an Object (Note, Task, Activity, Comment, Page ....) which is not really part of the original data but decorates it. The metadata information can be personal (such as favorites or unread flag) or can be attached to an audience (Space Members of a given Activity, such as a Tag or a Translation).

Knowing this, the Observer API that will allow to watch changes made on an object relies on the same system. In fact, the advantage of using Metadata API would be to design a transitive system for all type of objects with a centralized behavior which doesn't alter the real information of the Object itself (Activity, Notes or a Task by example).

Similar to favorites, the watch flag is personal and will be associated to each user apart on each object. Knowing that the Activities itself are a representation of an eventual object, the Metadata of "watching" has to be associated to the original object (Notes, Task, Gamification Action ...). To do this, the API has to be extensible to permit this behavior of attaching a "watch" flag to an activity of an external object and vice versa, attaching a watch flag to an object that will be automatically inherited by its genrated activity.

Once the watch flag is associated to the activity (and in eventual improvements, display and manage the "watch" flag on extended objects), a notification plugin can be triggered when a comment is added to an activity to determine the list of users who watched it so that they receive a special notification of change made.

Data and persistence

No change

margondicco commented 1 year ago

Hello no comment. Go Func Thank you

boubaker commented 1 year ago

@rdenarie ready for Tech review

rdenarie commented 1 year ago

ok for me. Go tech

srenault-meeds commented 1 year ago

@margondicco @Julien-Dubois-eXo we suggest to remove the notification for notes edition. Indeed, this is old and this was related to notes watchers, option we don't have anymore. So we suggest to make it simpler until we provide new notification more consistent with what users can expect. WDYT? Any objection?

margondicco commented 1 year ago

perfect !

Julien-Dubois-eXo commented 1 year ago

One point that could be really useful in the notification center: an unread notification filter. Frequently we missed some notifications because we received too much and we forgot to open one or two.

As the number on the bell disappears once we click on it, no matter if we read it or not the notification, the filter could help us catch the unread notification.

Finally, keep the number on the bell until we have read the notification.

Maybe all my points will be in the other MIP you mention.

srenault-meeds commented 1 year ago

Added a requirement regarding grouped notifications:

Grouping notifications when multiple likes are done will be kept as is However, grouping notifications when mulitple comments to an activity will be removed to avoid losing context of answers AND we suggest to remove the autowatch behaviour proposed when liking or commenting an activity. -> Indeed, to avoid users getting notifications for an activity they have liked each time someone comments OR for an activity they have commented each time someone adds a comment (not a reply), this autowatch will be replaced by a manual watch option. This option will be proposed to users from the three dots so they can decide to receive notifications for activities they want to watch.

cc @margondicco as discussed

srenault-meeds commented 1 year ago

One point that could be really useful in the notification center: an unread notification filter. Frequently we missed some notifications because we received too much and we forgot to open one or two.

As the number on the bell disappears once we click on it, no matter if we read it or not the notification, the filter could help us catch the unread notification.

Finally, keep the number on the bell until we have read the notification.

Maybe all my points will be in the other MIP you mention.

Indeed, not the purpose of this one. I understand that we all want more, but this will be done afterwards. Thanks for understanding it.

boubaker commented 1 year ago

Indeed, to avoid users getting notifications for an activity they have liked each time someone comments OR for an activity they have commented each time someone adds a comment (not a reply), this autowatch will be replaced by a manual watch option.

The Spec Tech is updated consequently @rdenarie if you want to review again.

plamarque commented 1 year ago

ETA this week.

boubaker commented 1 year ago

@rdenarie PRs ready for review and ACCs up to date

rdenarie commented 1 year ago

PRs approved

boubaker commented 1 year ago

PRs approved

Thanks, as discussed, the technical detail about the newly introduced API added in Tech Spec section.

boubaker commented 1 year ago

PRs merged. Thanks.