Skip to content

Feature: Add per-conversation notification controls #1594

Description

@omaraziz255

There is current support only for controlling the hiding of notification previews. There is no ready-to-use functionality to mute notifications for individual direct conversations or geohash channels.
This can be particularly noisy for crowded geohash channels where users wish to remain active but not receive alerts all the time.

Proposal

Add a persistent mute/unmute control for:

  • Individual DMs
  • Individual GeoHash channels

This only mutes local notifications, and should not affect message reception, storage, read receipts, or any other state tracking. Existing Notification Preview settings should also remain the same.

My current thinking is:

  • Conversations are unmuted by default
  • Private-chat Headers should expose a Mute/Unmute Action
  • Active Geohash-channel Headers expose the same action
  • Muted state should persist across application launches
  • Direct conversation preferences should use stable identities where available and not depend solely on changeable keys like nicknames
  • Panic wipes remove all muted conversation preferences (Not necessary but seems like expected behaviour)
  • UI should provide localized accessibility labels and visibly indicate the muted state

Other ideas that don't have to be included in this PR is timed mutes (e.g 8 hour, 1 week, 1 year similar to Whatsapp), "Mentions-only" mode to receive only notifications that explicitly mention you, per-device proximity notification controls as discussed in #1523 , OS notification scheduling, Mute preferences syncing between devices.

Implementation

Perhaps a small injectable preference store that exposes conversation-scoped keys and is consulted by NotificationService before constructing the notification request. This should attempt to reflect the existing injected preview-policy approach. Happy to implement this in a focused PR

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions