feat(seerr): request missing movies and seasons from library items#1523
Open
l3gitpanda wants to merge 4 commits into
Open
feat(seerr): request missing movies and seasons from library items#1523l3gitpanda wants to merge 4 commits into
l3gitpanda wants to merge 4 commits into
Conversation
…menu Adds a "Request" entry to the shared library-card context menu, gated on a connected Seerr with request permission. Plex movies only offer it when no file is present; shows always offer it since season completeness is unknown at card level - the request sheet's own availability gating blocks already-available seasons. Resolves the item's TMDB id on demand via fetchExternalIds, then opens the existing Seerr request sheet. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016oGGWGt2igPx8mn8k5dkJb
Season cards with no episodes on the server now offer Request: the handler resolves the parent show's TMDB id and opens the request sheet with that season preselected via a new optional initialSeasons parameter. Specials are excluded since the sheet drops season 0. Also hardens the menu entry from review: movies gate on version data presence rather than backend (a Jellyfin detail fetch does carry MediaSources), the entry hides while the item's server is unreachable (mirroring Play Version), a Seerr disconnect between menu build and tap surfaces an error instead of a silent no-op, and the icon matches the maintainer's other Request affordances. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016oGGWGt2igPx8mn8k5dkJb
…son requests The "No episodes found" empty state on the show detail screen now offers a Seerr Request button (scoped to the selected season, or the whole show when episodes are flattened), reusing a new shared showSeerrRequestSheetForLibraryItem helper that the card context menu now also routes through. Fixes season requests on Jellyfin: the seasons endpoint may omit ParentId, leaving the show id in grandparentId (SeriesId), so resolution now falls back across both fields - previously every Jellyfin season request failed with "Couldn't load request options". Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016oGGWGt2igPx8mn8k5dkJb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ideally if you can implement the idea behind this however you like I would be really happy. Makes it very easy to request based on show/movie metadata you already have. Thanks for the great work on the project though!
Motivation
My library has a lot of metadata-only placeholder entries — shows Sonarr added from earlier requests that never completed, shows missing some seasons, movies with no file behind them. The new Explore tab covers requesting new content beautifully, but when I'm already looking at one of these items in my own library there was no path to Seerr: a show with a missing season, or a season tab that just says "No episodes found", left me switching to the Jellyseerr web UI to request it.
This PR closes that gap by wiring the existing Seerr request sheet into the library surfaces, so missing seasons and movies can be requested right where you notice they're missing.
What it does
initialSeasonsparameter onSeerrRequestSheet(defaultconst [], existing callers unaffected; only seasons the sheet considers requestable get preselected).How it works
Everything funnels through one new helper,
showSeerrRequestSheetForLibraryItem: resolve the item's TMDB id withMediaServerClient.fetchExternalIds, then open the existingshowSeerrRequestSheet. Seasons resolve through their show —parentId ?? grandparentId, since Plex children carry the show inparentRatingKeywhile Jellyfin's seasons endpoint carriesSeriesIdand may omitParentId. Failures reuse theseerr.requestsLoadFailedsnackbar; no new i18n keys.Visibility is a pure predicate (
isSeerrRequestVisible, unit-tested likeisAdminActionAllowedForMediaItem):mediaVersionsempty). Jellyfin browse listings omitMediaSources, so movie cards there fail open — the sheet still reports owned titles as available.Testing
dart format/flutter analyze/ fullflutter testclean (scripts/ci_checks.sh).🤖 Generated with Claude Code