-
Notifications
You must be signed in to change notification settings - Fork 461
New Watchlist
We can watch Projects, Packages and BsRequest.
Polymorphic association: watchable.
Table watched_items
- watchable_id
- watchable_type
- user_id
Project
has_many :watched_items, as: :watchable
Package
has_many :watched_items, as: :watchable
BsRequest
has_many :watched_items, as: :watchable
WatchedItem
belongs_to :watchable, polymorphic: true
belongs_to :user
The action Webui::WatchedItemsController#toggle is in charge of adding or removing an item from the watchlist.
There are three routes (one per each type of object: project, package, request) that end up in this controller action.
'watched_items/package/:project/:package/toggle'
'watched_items/project/:project/toggle'
'watched_items/request/:number/toggle'
We'll enable the new_watchlist feature flag. This displays the new watchlist to replace the old one, so the user can handle packages and requests apart from projects.
Those operations should be behind the feature flag.
We could:
- mark project as watched by someone
- mark package as watched by someone
- mark request as watched by someone
- remove watched mark by someone from a project
- remove watched mark by someone from a package
- remove watched mark by someone from a request
- list watched items by someone
Checking permissions to
- anybody can create watched items for itself
- nobody can create watched items for anyone else unless Admin
- nobody can delete watched items from anybody's watchlist unless Admin
- only the user can see its own watchlist
- Create the migration
- Update models
- Create the feature flag
- Implement the controllers to manage watchables
- Implement the new UI behind the feature flag
Once the feature is rolled out, we'll need to sync the data with data migration. Adding the projects the user had in the old watched_projects table to the new watched_items table.
Bookmark a project, package or request by clicking on an icon near the project name, package name or request name (:fa-bookmark)
- Development Environment Overview
- Development Environment Tips & Tricks
- Spec-Tips
- Code Style
- Rubocop
- Testing with VCR
- Test in kanku
- 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
- Package Versions
- next_rails
- Ruby Update
- Rails Profiling
- 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
- Brakeman
- How to Introduce Software Design Patterns
- Query Objects
- Services
- View Components
- RFC: Core Components
- RFC: Decorator Pattern
- RFC: Backend models
- RFC: Hotwire Turbo Frames Pattern