Skip to content

Watchlist titles that aren't in the library yet #560

Description

@Quick104

Silo now lets a profile add a movie or series to its watchlist before the
library has it, usually from Discover. The server keeps the entry by TMDB ID,
can request the title, and moves the entry onto the library watchlist when the
title arrives. The iOS, tvOS and macOS apps can't add these titles and don't
show them, so a profile that adds one on the web sees nothing on Apple devices
until the title arrives.

Server change: Silo-Server/silo-server#1711. Contract, in that PR: docs/architecture/api-contract.md
("Watchlist titles") and docs/architecture/external-watchlist.md. The server
change is merged.

Check GET /api/v2/requests/status first. Show everything below only when
watchlist_titles_supported and requests_enabled are both true. The server
reports watchlist_titles_supported false while requests are off, when the title
operations answer 409 capability_disabled.

What to build:

  1. Discover watchlist button. On a Discover title and its poster cards,
    add "Add to Watchlist" / "On Watchlist". Read the state from in_watchlist
    on search, section, browse and detail results. Add with
    PUT /api/v2/watchlist/titles/{media_type}/{tmdb_id} and remove with
    DELETE on the same path. The add answers 200 with item_id set when the
    library already has the title, and with the title's request state. Both
    calls are non_retryable: don't retry them automatically after an
    uncertain response.
  2. "Not in your library yet" on the watchlist. List entries with
    GET /api/v2/watchlist/titles (limit, cursor). Show a poster, title,
    year and status for each, with no Play action. status is active,
    needs_review or removed; read an unknown value as active. For
    needs_review ("TMDB lists it twice") and removed ("No longer listed on TMDB"),
    offer a search for the title and a remove action. While request.download
    is present, show its progress. The web shows this as a second tab next to
    "In your library", with the entry count.
  3. Request status badge. Add the request_status card overlay to the
    overlay settings and poster rendering. Offer it only when the settings
    manifest_revision is at least 15; an older server rejects a stored value
    that contains it. The web labels are "Downloading 43%", "Out Dec 18",
    "Approved", "Awaiting approval", "Not requested", "Needs attention" and
    "Not on TMDB".
  4. Profile setting. Add the profile setting
    requests.watchlist_auto_request ("Request titles I add to my watchlist",
    default on) to the app's request settings. watchlist_requests on the
    request status is the effective answer for the acting profile. The web shows
    the switch when that is true, or when the profile has turned the setting
    off, so it can turn it back on.

Requests now carry source (direct or watchlist, open set). Nothing needs
to show it, but a model that decodes requests strictly must accept it.

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    api-v2API v2 / Huma program (epic silo-server#135)enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions