* 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
* Localize a few isolated strings
* Localize paginator
* Localize a few isolated strings
* Make button width dynamic for better i18n
* Localize a few isolated strings
* Fix technical typo
* Secure ManageOwnRequests API paths
Fixes#4391
* Hide delete request option if user is not allowed
* Refactor CheckOwnRequests
* Fix deleteRequest test
* Improve performance and clean up code
* Fix manageOwnRequests check
* Refactor CheckCanManageRequest
* Update pomelo framework for net 6 support
* Aspnetcore v6
* Revert spaservices
* Update all references to old pomelo
* Note problem line
* Disable charsetoption in databaseextensions, version left
* fix: fixed the compiler error
Co-authored-by: Dyson Parkes <dyson@berserkir.net>
* chore: updated tfm to net6
* chore: updated main packages
* chore: fixed some warnings
* core: Added workflow_dispatch to some of the CI pipelines [skip ci] (#4392)
* chore: bump the net version
* ci: use the dotnet ver task everywhere
* 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]
* Localize TV and movies titles in requests
* Add missing release statuses
* Localize collection request
* Localize TV shows in newsletter
Uses TMDB instead of TVMaze for title, genres and synopsis
* Localize error messages
* Localize albums requests
* Use current language for TV and movies requests
* Remove unecessary console log
Fixed an issue where if you only had external users, it wouldn't send. Fixed another issue where it didn't cater for potential duplicate email addresses