Skip to content

feat: report the current status of an already-requested movie - #22

Open
matiasba wants to merge 1 commit into
activexray:mainfrom
matiasba:feat/radarr-request-status
Open

feat: report the current status of an already-requested movie#22
matiasba wants to merge 1 commit into
activexray:mainfrom
matiasba:feat/radarr-request-status

Conversation

@matiasba

@matiasba matiasba commented Aug 9, 2026

Copy link
Copy Markdown

Closes #16

Selecting a movie Radarr already has ended the flow with a flat "Already
requested - nothing more to add". This replaces it with what Radarr is
actually doing:

  • Already available (Bluray-1080p)
  • Downloading - 47%, 00:12:34 remaining
  • Download stalled at 47% - The download is stalled with no connections
  • Downloaded, but the import is blocked
  • Queued for download / Download paused at 12% / Waiting on an indexer delay
  • Waiting to be available - Radarr is searching for a release
  • Waiting to be available - not released yet (expected 2026-09-01)
  • Already in Radarr, but not monitored - nothing will be downloaded

How

New trait method MediaBackend::early_stop_message, called only once
early_stop has decided to end the flow — so it can query the backend without
breaking the "no backend request" contract early_stop itself carries. It has a
default returning the previous message, so Sonarr and Seerr are unaffected.

Radarr implements it by reading GET /movie/{id} and GET /queue/details in
parallel. If either request fails it falls back to the generic message rather
than reporting a wrong state.

It also acknowledges the dropdown interaction before that lookup — Discord marks
a component interaction left unanswered for three seconds as failed. Happy to
split that out if you'd prefer it separate.

Testing

12 unit tests covering the status formatting, which is a pure function over the
Radarr payloads. cargo test, cargo clippy --all-targets and
cargo fmt --check are clean. Also verified running against a live Radarr
instance.

image

Selecting a movie Radarr already has ended the flow with a flat "Already
requested - nothing more to add", which says nothing about whether the
movie is on disk, downloading, stuck or still waiting for a release.

Add `MediaBackend::early_stop_message`, which runs after `early_stop` has
already decided to end the flow, so a backend is free to query for status
there without breaking the "no backend request" contract `early_stop`
itself carries. Backends that have nothing to add inherit a default that
returns the previous message, so Sonarr and Seerr are unaffected.

Radarr implements it by reading the library record and the queue in
parallel, and reports what it finds: the quality on disk, download
progress, a stalled or blocked download along with Radarr's own
explanation, or why nothing is happening yet. Either request failing
falls back to the generic message rather than reporting a wrong state.

The early-stop path also now acknowledges the dropdown interaction before
that lookup - Discord marks a component interaction left unanswered for
three seconds as failed.

Refs activexray#16

Co-Authored-By: Claude Opus 5 (1M context) <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.

Return current status of request when already requested

1 participant