-
Notifications
You must be signed in to change notification settings - Fork 440
RSS Feed for Notifications
- RSS Feeds are for all users.
- RSS Feeds' items come from notifications.
- Notifications are built from events.
- Users can configure where they want to receive their notifications (Web UI, RSS Feeds, email, ...).
- RSS Feeds include only the last notification for ReviewWanted events, if both Web UI and RSS Feeds are configured.
- RSS Feeds include all notifications if only RSS Feeds are configured.
- One user sends a BsRequest to another user.
- Involved users can add multiple Reviews, for that BsRequest.
- Every time a Review gets created, an ReviewWanted event is created.
- Every time a ReviewWanted gets created, a Notification is created from it.
- Then every previous notification for this BsRequest are removed, if Web UI is configured.
Examples of current RSS Feeds can be found in this wiki page.
Users that have Web UI configured will only receive the last ReviewWanted notification in their RSS Feeds.
No matter what users have configured, users will receive all notifications in their RSS Feeds.
- RSS Feeds are for all users.
- RSS Feeds' items come from notifications.
- Notifications are built from events.
- Users can configure where the want to receive their notifications (Web UI, RSS Feeds, email, ...).
- RSS Feeds include all notifications for ReviewWanted events.
- One user sends a BsRequest to another user.
- Involved users can add multiple Reviews, for that BsRequest.
- Every time a Review gets created, an ReviewWanted event is created.
- Every time a ReviewWanted gets created, a Notification is created from it.
- If RSS Feeds is not configured, all the previous notifications of a BsRequest are removed.
Modify the NotificationService::WebChannel service, to not remove outdated notifications, ever:
This also implies to modify the Notifications services, to set the web column to false, in the outdated Notifications of a BsRequest.
Optional: implement again the periodic cleanup.
Implementation:
- Every time an event happens, we create a new notification. Then, we take the previous notification related to the same notifiable and set their web column to false.
- To show the right notifications in the Web UI, we need to perform a query to get the only notification with web column set to true per each notifiable.
Modify the NotificationService::WebChannel service, to not remove outdated notifications, ever:
This also implies to modify the Notifications view, to only display the more recent of the Notifications of a BsRequest.
Optional: implement again the periodic cleanup.
Implementation:
- Every time an event happens, we create a new notification. (no more controls needed)
- To show the right notifications in the WebUI, we need to perform a query to take all the notifications, group by notifiable, sort every group by created_at, take the most recent one of each group to show it in the WebUI.
- Modify the NotificationService::WebChannel service, to remove outdated notifications, only in case Web UI is the only Channel configured.
- There are only 96 Token:Rss of about 72.000 users. -> Delete notifications when RSS is not configured implies a important save in memory,
- We need to check if the user has both Token:Rss and the RSS channel configured to generate all the notifications.
- Development Environment Overview
- Development Environment Tips & Tricks
- Spec-Tips
- Code Style
- Rubocop
- Testing with VCR
- Authentication
- Authorization
- Autocomplete
- BS Requests
- Events
- ProjectLog
- Notifications
- Feature Toggles
- Build Results
- Attrib classes
- Flags
- The BackendPackage Cache
- Maintenance classes
- Cloud uploader
- Delayed Jobs
- Staging Workflow
- StatusHistory
- OBS API
- Owner Search
- Search
- Links
- Distributions
- Repository
- Data Migrations
- next_rails
- Ruby Update
- Rails Profiling
- Installing a local LDAP-server
- Remote Pairing Setup Guide
- Factory Dashboard
- osc
- Setup an OBS Development Environment on macOS
- Run OpenQA smoketest locally
- Responsive Guidelines
- Importing database dumps
- Problem Statement & Solution
- Kickoff New Stuff
- New Swagger API doc
- Documentation and Communication
- GitHub Actions
- How to Introduce Software Design Patterns
- Query Objects
- Services
- View Components
- RFC: Core Components
- RFC: Decorator Pattern
- RFC: Backend models