A TV show will be 'Denied' if all its episodes are denied (replaces very recently added 'FullyDenied' property).
Individual episodes will show the correct denied status along with the reason.
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
This removes the generic admin email setting.
Instead we use the email addresses set on the users' profile.
Allows for notifications to many recipients in case of multiple admins.
Email testing now sends the test email to the currently logged in user.
* feat: updated radarr settings API to support 4k
* feat: refactored the radarr setting page to support the new model
* feat: Added 4k radarr to the settings page
* feat: Added the new Movie 4k Request
* feat: Got some of the backend rules done
* feat: Made a load of progress
* Removed the csproj ref
* feat: fixed the radarr ui
* feat: fixed up all the movie requests page
* feat: Hide the 4K buttons when the user does not have the 4k permission
* fix: fixed the templateref issue
* test: fixed up all the tests
* feat: Added migrations for media sever quality. Emby and Radarr Sync jobs now pull the quality
* feat: Done the media sync jobs
* feat: plex availability checker
* feat: Updated the jellyfin availability checker to check for 4k
* feat: updated emby availbility checker to check for 4k
* feat: almost got it all working now
* feat: Added 4k approve to the request list options
* feat: Added 4k to the requests list and bulk approve
* feat: Added the features service
* feat: added feature update to the frontend
* feat: got the features page working
* feat: Applied the feature service on the backend
* feat: added the feature flag on the UI
* feat: added 4k to the card
* Add sanity checks upon media server sync
Fixes Media content may be improperly imported into Ombi #4472
* Fix Jellyfin sync
* Refactor Emby and Jellyfin provider ids
* Use new method Any
* Fix log formatting
* Declutter newsletter info for series
- Do not list episodes if the series is complete
- Do not list all episodes of a season if the season is complete
* Use proper empty string constant
[skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* fix(translations): 🌐 New translations from Crowdin [skip ci]
* Abstract media servers content into interfaces
* Media server entities into abstract classes
* Abstract media server content repository
* First pass at newsletter refactoring
* Minor code clean up
* Attempt at abstracting repositories (WIP)
* Fixed cast issue
* Corrected the other properties
* A step towards newsletter refactoring
* Clean up leftovers
* Fix broken episodes db interaction
* Save absolute URL for Plex content
Let's be consistent with Emby and Jellyfin
* Fix broken integration with Plex libraries
* Fix error when multiple media servers configured
* Fix newsletter being sent if no movies or episodes
* Fix broken tests
* Remove unneccesary logs
* Allow for newsletter localization
* Generate file in English
* Fix unsubscribe text unlocalized by messy merge
* Fix indentation
Co-authored-by: tidusjar <tidusjar@gmail.com>
* Abstract media servers content into interfaces
* Media server entities into abstract classes
* Abstract media server content repository
* First pass at newsletter refactoring
* Minor code clean up
* Attempt at abstracting repositories (WIP)
* Fixed cast issue
* Corrected the other properties
* A step towards newsletter refactoring
* Clean up leftovers
* Fix broken episodes db interaction
* Save absolute URL for Plex content
Let's be consistent with Emby and Jellyfin
* Fix broken integration with Plex libraries
* Fix error when multiple media servers configured
* Fix newsletter being sent if no movies or episodes
* Fix broken tests
* Remove unneccesary logs
* Expose stored media server URL
No need to recalculate it
+ Plex URL was broken due to an earlier change
* Remove unused variable
* Remove obsolete tests
URLs are now fetched from database directly
* Retro-compatibility for Plex content URL
Solves URL for media synced before absolute URL was saved in PlexServerContent
* chore: added some obsoletes
* fix: removed the unsub link when not present
Co-authored-by: tidusjar <tidusjar@gmail.com>
* Send new request email notifications to power users
* Send new request to power users as convention
Remove option to toggle it off
* Send New Request notification to power users in app
* Better wording + fix mobile notifications
* Fix 100th Emby episode not being synced
Emby API is zero-based offset
* Fix 100th Emby TV show and movie not being synced
* Fix Jellyfin API offset error