-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Description
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.readAPI endpoint - Clear the unread badge for that room
- Remove the notification from the notification tray
- Update the room's read status on the server
- Call the
This feature would work in both foreground and background states.
Motivation and Use Case
User Pain Points:
- Notification Overload: Users often receive many notifications during busy periods and want a quick way to triage them without opening each conversation
- Workflow Interruption: Currently, users must open the app and navigate to each room just to mark messages as read, which disrupts their current task
- 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)
- 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
]);
-
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
-
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:
-
Network Unavailable:
- Queue action for retry when connection restored
- Or show brief error notification
-
Expired Auth Token:
- Attempt token refresh
- Gracefully fail if user needs to re-login
-
Multiple Notifications from Same Room:
- Mark all as read when action is triggered on any one
-
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
This is the feature i am talking about !!