Meeds-io / MIPs

The Meeds Improvement Proposal repository
0 stars 0 forks source link

Mute spaces option #97

Closed srenault-meeds closed 8 months ago

srenault-meeds commented 9 months ago

Rationale

❌ When listing notifications in the drawer, I can't mark it as read when using desktop (I can do it only in mobile view by using swipe to the right) ❌ When I receive notifications related to a space I am not active, I cannot mute this space

1. Functional Requirements

Top User Stories

UX when hovering a notification from the drawer ✅ Three dots proposed when hovering a notification to remove it or to mark it as read

image

New option to mute notifications for any activity in a space ✅ Option to mute notifications from a space

✅ Ability to mute a space from its popover, its details and from user settings

image

When muted, any notification coming from that space will be muted, except mention:

Impacts

NA

Gamification

NA

Notifications

NA

Analytics

Usage of spaces that are muted

Unified Search

NA

2. Technical Requirements

Expected Volume & Performance

No considerable amount of data should be used to store the muted spaces information per user (a simple list of space identifiers).

Security

Only an admin or the user him(her)self should be able to mute a space.

Extensibility

We should be able to designate some plugins that are sent even if the associated space is muted.

Configurability

The default configuration for all notification plugins has to be user can mute it by default, only for some plugins (like for mention based plugins) where we should give a way to make the muting on it is disabled.

Upgradability

No data upgrade is needed on already existing notifications.

Feature Flags

No feature flags will be added.

4. Software Architecture

Access

A new REST endpoint has to be added to allow muting a space or unmute it. Like enabling/disabling channel endpoint, the used endpoint will be /notifications/settings/{username}/spaces/{spaceId} with a Form Parameter to set it enabled or disabled. The existing endpoint to retrieve user settings will be used to retrieve muted spaces list.

Services & processing

Each generated Notification has to allow to specify the spaceId. By default, to reuse the work done in SpaceWebNotification (MIP #17 ), by default the space identifier will be retrieved from parameter "spaceId" which is already stored in notifications. In UserSetting, the list of muted spaces will be mapped using SettingService as other attributes of User Notification Settings. Consequently, the notifications processing will be changed to validate for each user whether the space is muted for a given plugin inside a pace or not. If not, send it else ignore its processing for all channels.

Data and persistence

No change

srenault-meeds commented 9 months ago

Ready for review @margondicco

srenault-meeds commented 9 months ago

Reviewed the description cc @margondicco

margondicco commented 9 months ago

Hello Go fonc (+ add coworker for tasks)

srenault-meeds commented 9 months ago

yes updated thanks

srenault-meeds commented 9 months ago

Read for tech spec @boubaker

boubaker commented 9 months ago

Spec Tech ready for review by DAO Members (eXo : @rdenarie )

rdenarie commented 9 months ago

Ok for me. Like for Notification UI upgrade, it will need an update on eXo notification (spaceId is not present in all notification as I can see).

boubaker commented 8 months ago

ACCs & PRs ready to review by DAO members (eXo: @rdenarie )

Like for Notification UI upgrade, it will need an update on eXo notification (spaceId is not present in all notification as I can see).

Yes, you can find an example here: https://github.com/Meeds-io/kudos/pull/393/files and https://github.com/Meeds-io/task/pull/270/files

rdenarie commented 8 months ago

All PR approved

boubaker commented 8 months ago

All PR approved

Thanks all PRs merged.