feature: Add "Mark as Read" action button to push notifications

Aperta
#6,842 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@DSingh0304 ci sta già lavorando.

Dal 9/12/2025.

  • #6867 di @DSingh0304 — chiusa senza merge

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
android, ios, react-native, swift, typescript
Ambito
mobile, mobile-dev

Direzione di ricerca

Inizia da app/lib/notifications/push.ts e ios/ReplyNotification.swift, quindi esamina l’handler REPLY_ACTION esistente e app/lib/methods/readMessages.ts per l’utilizzo dell’API subscriptions.read. Traccia il modo in cui i payload delle notifiche forniscono rid e il modo in cui le azioni in primo piano e in background vengono gestite su entrambe le piattaforme. Il lavoro è completato quando un’azione Mark as Read chiama subscriptions.read, cancella la notifica della room e lo stato di non lettura e funziona in primo piano e in background.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

🎉 feature
Feature Description

Add a "Mark as Read" quick action button to push notifications, similar to WhatsApp, Telegram, and Slack messaging apps. This would allow users to mark messages/rooms as read directly from the notification without opening the app.

Proposed Behavior:
  • When a user receives a chat notification, they would see action buttons including:

    • Reply (already exists)
    • Mark as Read (NEW)
  • Tapping "Mark as Read" would:

    • Call the subscriptions.read API endpoint
    • Clear the unread badge for that room
    • Remove the notification from the notification tray
    • Update the room's read status on the server

This feature would work in both foreground and background states.

Motivation and Use Case
User Pain Points:
  1. Notification Overload: Users often receive many notifications during busy periods and want a quick way to triage them without opening each conversation
  2. Workflow Interruption: Currently, users must open the app and navigate to each room just to mark messages as read, which disrupts their current task
  3. Mobile UX Expectations: Modern messaging apps (WhatsApp, Telegram, Slack, Microsoft Teams) all provide this functionality, making it a standard user expectation
Benefits:

Faster notification management - One tap vs opening app → navigating to room → going back
Reduced app opens - Better battery life and performance
Better focus - Users can clear notifications without context switching
Cleaner notification tray - Reduces notification fatigue
Professional UX - Matches expectations from other enterprise chat apps

Implementation Ideas

Technical Implementation Plan:

Phase 1: iOS (Easier to implement)

  1. Add Notification Action (app/lib/notifications/push.ts)
const markAsReadAction = new NotificationAction(
  'MARK_AS_READ_ACTION', 
  'background',  // Can execute in background
  I18n.t('Mark_as_read'), 
  false  // Doesn't require text input
);

const notificationCategory = new NotificationCategory('MESSAGE', [
  notificationAction,    // Existing Reply action
  markAsReadAction       // NEW action
]);

  1. Add Native Handler (ios/ReplyNotification.swift)

    • Add handler similar to existing REPLY_ACTION
    • Extract rid from notification payload
    • Call subscriptions.read API endpoint
    • Handle success/failure cases
  2. API Integration

    • Endpoint: POST subscriptions.read (already exists!)
    • Parameters: { rid: string, readThreads?: boolean }
    • Auth: Use existing RocketChat helper class

Phase 2: Android

Android requires custom notification channel configuration:

  • Create notification action in Java/Kotlin
  • Wire up to existing API methods
  • Handle background execution

API Requirements:

Good news: The required API already exists!

  • Endpoint: subscriptions.read (available since RC 0.61.0)
  • Current usage: Already used in app/lib/methods/readMessages.ts
  • No server changes needed

API Flow:
Notification Action → Extract rid → POST subscriptions.read { rid } → Update local DB → Clear notification

Edge Cases to Handle:

  1. Network Unavailable:

    • Queue action for retry when connection restored
    • Or show brief error notification
  2. Expired Auth Token:

    • Attempt token refresh
    • Gracefully fail if user needs to re-login
  3. Multiple Notifications from Same Room:

    • Mark all as read when action is triggered on any one
  4. Encrypted Rooms:

    • Works the same way (marks as read, doesn't affect encryption)
Is this feature available in the API or web version?

Available in API

Rocket.Chat Server Version

Any version >= 0.61.0 (subscriptions.read API available)

Rocket.Chat App Version

4.68.0

Device Name

All iOS and Android devices

OS Version

iOS 13+ / Android 7.0+ (notification actions support)

Additional Context
Image

This is the feature i am talking about !!

Lingua principale
TypeScript
Stelle
2.4k
Fork
1.5k
Merge medio
1g 15h
PR unite (30g)
29

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di RocketChat/Rocket.Chat.ReactNative

Tutte le issue di RocketChat/Rocket.Chat.ReactNative

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.