Skip to content

feat: request button navs to the jf entry for available media - #29

Open
b3p3k0 wants to merge 1 commit into
varunaditya-plus:mainfrom
b3p3k0:feat/available-button-opens-item
Open

feat: request button navs to the jf entry for available media#29
b3p3k0 wants to merge 1 commit into
varunaditya-plus:mainfrom
b3p3k0:feat/available-button-opens-item

Conversation

@b3p3k0

@b3p3k0 b3p3k0 commented Aug 16, 2026

Copy link
Copy Markdown

Summary

(generated by Claude, reviewed and lightly edited by human)

In the details modal, media that already exists on the server shows a disabled "Available" / "Partially available" button — a dead end, especially for non-technical users who found the title through the discover rows and now have no clear path to actually watch it.

This PR makes that button more effective imho by giving the user a direct path to the title: when Seerr knows the item's Jellyfin id (mediaInfo.jellyfinMediaId / jellyfinMediaId4k, present for status 4/5), the button renders enabled — looking exactly like a normal "(Partially) Avaialble" button — and clicking it closes the modal and navigates to the item's Jellyfin details page. Label text is unchanged and users have a clear path to playing the title.

  • If Seerr has no Jellyfin id for the item, the button stays disabled exactly as before - no behavior change.
  • Navigation reuses the same pattern as the Requests tab's Play button (ApiClient.getItem -> AppRouter.showItem, falling back to Dashboard.navigate('details?id=…')), copied into the modal since each Inject file is self-contained. Seerr itself builds the same details?id= links server-side, so the pattern has upstream precedent.
  • The request click-handler is else if-gated, so a navigable button can never also open the request dialog. 4K button gets the symmetric treatment.
  • One file changed: Inject/seerrfin-modal.js (+53/−5). No CSS, backend, or config changes; no version bump.

How I tested

Disposable Docker stack: Fresh Jellyfin 10.11.11 + Seerr (ghcr.io/seerr-team/seerr:latest) + a local plugin repository, with File Transformation and this build installed through the normal Dashboard → Plugins → Repositories flow.

  1. Library title surfaced in the Trending row → modal shows enabled "Available" button (normal Request styling) → click → modal closes, lands on the item's Jellyfin details page. ✅
  2. Not-on-server title → "Request" works as before, request appears in Seerr, button flips to disabled "Pending". ✅
  3. Title with no jellyfinMediaId → button disabled, unchanged from current behavior. ✅
  4. Browser console clean throughout. ✅

My own "prod" stack: installed manually per Jellyfin SOP and existing prereqs

  1. Smoke-tested the built DLL on my production Jellyfin server: fully-available movie and a partially-available series (Ted Lasso) both navigate correctly. No issues noted (touch wood) ✅

Environment: Jellyfin 10.11.11 (Docker, official image) and a bare metal "production" Jellyfin instance 10.11.11 • Seerr latest (ghcr) • Firefox on Ubuntu Linux 26.04 • default theme

Screenshots: Screenshot_20260816_122627

AI usage disclosure (per CONTRIBUTING #3)

Written with AI assistance: Claude Code (CLI/VSCode harness), model Claude Fable 5 (claude-fable-5), across a recon session (reading this codebase + Seerr's source to find jellyfinMediaId and the existing navigateToJellyfinItem pattern) and an implementation session. All code was reviewed line-by-line and tested end-to-end by me on the setups described above.

The humble human has 30+ years experience in programming and computing, but not in these languages. Claude was a "Rosetta Stone" to turn my idea and pseudocode into something workable.

🤖 Generated with Claude Code

…ia instead of being grey

Co-authored by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant