Skip to content

feat(settings): hide already requested media#1855

Open
0xSysR3ll wants to merge 6 commits into
seerr-team:developfrom
0xSysR3ll:feat-hide-requested-media
Open

feat(settings): hide already requested media#1855
0xSysR3ll wants to merge 6 commits into
seerr-team:developfrom
0xSysR3ll:feat-hide-requested-media

Conversation

@0xSysR3ll

@0xSysR3ll 0xSysR3ll commented Aug 18, 2025

Copy link
Copy Markdown
Contributor

Description

This PR introduces a new setting that allows users to hide media that has been requested but is not yet available from the "Discover" home page and related categories.

How Has This Been Tested?

Screenshots / Logs (if applicable)

image

Checklist:

  • I have read and followed the contribution guidelines.
  • Disclosed any use of AI (see our policy)
  • I have updated the documentation accordingly.
  • All new and existing tests passed.
  • Successful build pnpm build
  • Translation keys pnpm i18n:extract
  • Database migration (if required)

Issues Fixed or Closed

Summary by CodeRabbit

  • New Features
    • Added a “Hide Requested Media” toggle in Settings to hide requested-but-not-yet-available movie/TV items across Discover, Recommended, Similar, and media detail browsing; it’s off by default. Requested items remain searchable.
  • Documentation
    • Added documentation explaining the new Hide Requested Media behavior and its coverage.
  • Localization
    • Added the UI label and tooltip text for the new setting.

@gauthier-th gauthier-th mentioned this pull request Sep 10, 2025
@github-actions github-actions Bot added the merge conflict Cannot merge due to merge conflicts label Oct 6, 2025
@github-actions

github-actions Bot commented Oct 6, 2025

Copy link
Copy Markdown

This pull request has merge conflicts. Please resolve the conflicts so the PR can be successfully reviewed and merged.

@0xSysR3ll
0xSysR3ll force-pushed the feat-hide-requested-media branch from 6510445 to 4974f31 Compare October 8, 2025 17:10
@0xSysR3ll
0xSysR3ll requested a review from a team as a code owner October 8, 2025 17:10
@github-actions github-actions Bot removed the merge conflict Cannot merge due to merge conflicts label Oct 8, 2025
@github-actions

Copy link
Copy Markdown

This pull request has merge conflicts. Please resolve the conflicts so the PR can be successfully reviewed and merged.

@github-actions github-actions Bot added the merge conflict Cannot merge due to merge conflicts label Oct 30, 2025
@Altheran88

Copy link
Copy Markdown

@0xSysR3ll would you be willing to resolve the merge conflicts so it can be merged ? :) Thanks a lot for your contribution !

@0xSysR3ll

0xSysR3ll commented Nov 10, 2025

Copy link
Copy Markdown
Contributor Author

@0xSysR3ll would you be willing to resolve the merge conflicts so it can be merged ? :) Thanks a lot for your contribution !

I could, but since we're currently in feature freeze, it's not relevant at the moment.
Don’t worry - this will be merged once the merger is complete. :)

@0xSysR3ll
0xSysR3ll force-pushed the feat-hide-requested-media branch from 4974f31 to ed467b7 Compare March 5, 2026 20:39
@github-actions github-actions Bot removed the merge conflict Cannot merge due to merge conflicts label Mar 5, 2026
@coderabbitai

coderabbitai Bot commented Mar 5, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 23f5ab57-a818-483d-ba6c-0d989ec96022

📥 Commits

Reviewing files that changed from the base of the PR and between 276853d and c8d0914.

📒 Files selected for processing (3)
  • server/entity/Media.ts
  • src/components/MediaSlider/index.tsx
  • src/hooks/useDiscover.ts

📝 Walkthrough

Walkthrough

Adds the hideRequested setting across backend and frontend contracts, defaults, UI, and documentation. Discovery-related views filter requested but unavailable media when enabled, while search remains available.

Changes

Hide requested media setting

Layer / File(s) Summary
Settings contract and defaults
server/lib/settings/index.ts, server/interfaces/api/settingsInterfaces.ts, seerr-api.yml, src/context/SettingsContext.tsx, src/pages/_app.tsx
Defines hideRequested, defaults it to false, propagates it through public settings, and adds it to the API schema and client defaults.
Settings UI and documentation
src/components/Settings/SettingsMain/index.tsx, src/i18n/locale/en.json, docs/using-seerr/settings/general.md
Adds the checkbox, submission field, translations, and documentation for hiding requested media.
Request-aware media filtering
server/entity/Media.ts, src/hooks/useDiscover.ts, src/components/MediaSlider/index.tsx, src/components/Search/index.tsx
Loads active request state and filters requested movie and TV titles when enabled, while search opts out of the filter.

Estimated code review effort: 3 (Moderate) | ~22 minutes

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant SettingsUI
    participant SettingsAPI
    participant Discover
    participant MediaGetRelatedMedia
    participant Filter

    User->>SettingsUI: Enable hideRequested
    SettingsUI->>SettingsAPI: Submit hideRequested=true
    SettingsAPI-->>SettingsUI: Return updated settings
    Discover->>MediaGetRelatedMedia: Fetch related media
    MediaGetRelatedMedia-->>Discover: Return hasActiveRequest state
    Discover->>Filter: Remove requested movie and TV titles
    Filter-->>Discover: Return filtered titles
Loading

Possibly related PRs

  • seerr-team/seerr#3191: Changes request status handling used to determine whether media requests remain active.
  • seerr-team/seerr#3264: Implements the same hide-requested-media setting and related filtering behavior.

Suggested reviewers: gauthier-th, fallenbagel

Poem

🐰 Requests wait behind the screen,
Discovery stays neat and clean.
Search still finds each queued delight,
A checkbox hides them from sight.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: adding support to hide already requested media.
Linked Issues check ✅ Passed The PR implements the requested discovery-page filtering for already requested media and keeps search results visible.
Out of Scope Changes check ✅ Passed The changes stay focused on the new hide-requested setting, related filtering, and supporting UI/API/schema updates.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
src/hooks/useDiscover.ts (1)

16-19: Consider improving type precision for requests.

The requests field is typed as unknown[], but based on the server entity (server/entity/Media.ts), this is actually MediaRequest[]. While unknown[] works since only .length is accessed, a more precise type would improve maintainability if future code needs to access request properties.

🔧 Suggested type refinement
 interface BaseMedia {
   id: number;
   mediaType: string;
   mediaInfo?: {
     status: MediaStatus;
-    requests?: unknown[];
+    requests?: { length: number }[];
   };
 }

Alternatively, if MediaRequest is importable from @server/entity/Media, a full type could be used.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/hooks/useDiscover.ts` around lines 16 - 19, The mediaInfo.requests
property is typed too loosely as unknown[]; change its type to MediaRequest[]
(importing MediaRequest from `@server/entity/Media`) so the mediaInfo definition
in useDiscover.ts becomes mediaInfo?: { status: MediaStatus; requests?:
MediaRequest[]; } to improve type safety and future property access.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/components/MediaSlider/index.tsx`:
- Around line 85-94: The filter in titles.filter incorrectly requires
(i.mediaType === 'movie' || i.mediaType === 'tv') for all entries, which drops
person results when settings.currentSettings.hideRequested is true; change the
predicate to explicitly allow person entries through (e.g., (i.mediaType ===
'person') || ((i.mediaType === 'movie' || i.mediaType === 'tv') &&
(i.mediaInfo?.status === MediaStatus.AVAILABLE || i.mediaInfo?.status ===
MediaStatus.PARTIALLY_AVAILABLE || !i.mediaInfo?.requests ||
i.mediaInfo.requests.length === 0))). Keep the null-safe accesses (i.mediaInfo?)
and use the existing symbols settings.currentSettings.hideRequested,
titles.filter, mediaType, MediaStatus, and mediaInfo to locate and update the
code.

---

Nitpick comments:
In `@src/hooks/useDiscover.ts`:
- Around line 16-19: The mediaInfo.requests property is typed too loosely as
unknown[]; change its type to MediaRequest[] (importing MediaRequest from
`@server/entity/Media`) so the mediaInfo definition in useDiscover.ts becomes
mediaInfo?: { status: MediaStatus; requests?: MediaRequest[]; } to improve type
safety and future property access.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 7cd9fd0b-4b5d-4007-aff4-907919a1d6bd

📥 Commits

Reviewing files that changed from the base of the PR and between e25c1a5 and ed467b7.

📒 Files selected for processing (11)
  • docs/using-seerr/settings/general.md
  • seerr-api.yml
  • server/entity/Media.ts
  • server/interfaces/api/settingsInterfaces.ts
  • server/lib/settings/index.ts
  • src/components/MediaSlider/index.tsx
  • src/components/Search/index.tsx
  • src/components/Settings/SettingsMain/index.tsx
  • src/context/SettingsContext.tsx
  • src/hooks/useDiscover.ts
  • src/pages/_app.tsx

Comment thread src/components/MediaSlider/index.tsx

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new main setting to optionally hide requested-but-unavailable media from Discover surfaces (home “Discover” and related recommendation/similar lists), while keeping requested items visible in search.

Changes:

  • Introduces hideRequested in server/public settings and wires it through the Settings UI.
  • Implements client-side filtering in useDiscover and MediaSlider based on requested state.
  • Updates docs, OpenAPI schema, and English locale strings for the new option.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/pages/_app.tsx Adds hideRequested to initial public settings fallback.
src/i18n/locale/en.json Adds English strings for the new toggle + tooltip.
src/hooks/useDiscover.ts Adds hideRequested option and filtering logic for discover-style queries.
src/context/SettingsContext.tsx Adds hideRequested to default settings context.
src/components/Settings/SettingsMain/index.tsx Adds the “Hide Requested Media” checkbox and includes it in save payload.
src/components/Search/index.tsx Explicitly disables requested filtering for search results.
src/components/MediaSlider/index.tsx Adds requested filtering for slider-based lists.
server/lib/settings/index.ts Adds hideRequested to settings models, defaults, and public settings exposure.
server/interfaces/api/settingsInterfaces.ts Extends PublicSettingsResponse with hideRequested.
server/entity/Media.ts Loads media.requests in getRelatedMedia to support requested detection.
seerr-api.yml Adds hideRequested to the documented MainSettings schema.
docs/using-seerr/settings/general.md Documents the new setting and expected behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/hooks/useDiscover.ts Outdated
Comment thread src/hooks/useDiscover.ts Outdated
Comment thread src/components/MediaSlider/index.tsx Outdated
Comment thread server/entity/Media.ts Outdated
@0xSysR3ll 0xSysR3ll changed the title feat(settings): add 'Hide Requested Media' option to settings feat(settings): hide already requested media Jun 18, 2026
@Asinin3

Asinin3 commented Jun 18, 2026

Copy link
Copy Markdown

Could this also hide previously requested and available content that is now unavailable?

Would be nice for hiding content you grabbed them deleted without having to manually add to a blocklist

@andersennl

Copy link
Copy Markdown

Thanks for working on this. I’d really like to see this feature land. I noticed the PR is still open and has a few unresolved review comments from March. Is this still planned, and is there anything specific blocking it? I’d be happy to help test it if that would be useful.

@0xSysR3ll

Copy link
Copy Markdown
Contributor Author

Thanks for working on this. I’d really like to see this feature land. I noticed the PR is still open and has a few unresolved review comments from March. Is this still planned, and is there anything specific blocking it? I’d be happy to help test it if that would be useful.

Hello,

This is still planned. As you may have noticed, I'm a member of the Seerr team so I've been busy with other stuff (including PRs) – like the rest of the team.

I'll get back to this as soon as I can, and we'll review it once it's ready.

@andersennl

andersennl commented Jul 21, 2026

Copy link
Copy Markdown

Thanks for working on this. I’d really like to see this feature land. I noticed the PR is still open and has a few unresolved review comments from March. Is this still planned, and is there anything specific blocking it? I’d be happy to help test it if that would be useful.

Hello,

This is still planned. As you may have noticed, I'm a member of the Seerr team so I've been busy with other stuff (including PRs) – like the rest of the team.

I'll get back to this as soon as I can, and we'll review it once it's ready.

Hi, thanks for getting back to me. I didn't realize you were on the Seerr team when I first asked.

Quick heads-up: not knowing whether this PR was still active, I opened a separate one in the meantime and reused part of your work (credited in my PR).

Since you're clearly the right person to land this, I'm happy to defer to you. If anything in my version is useful, you're welcome to take it. Otherwise just say the word and I'll close mine so we don't have two open. Whatever's easiest for you.

@0xSysR3ll

Copy link
Copy Markdown
Contributor Author

Quick heads-up: not knowing whether this PR was still active, I opened a separate one in the meantime and reused part of your work (credited in my PR).

FYI, a PR is considered as stale after 30 days of inactivity and a label is applied to it.

Since you're clearly the right person to land this, I'm happy to defer to you. If anything in my version is useful, you're welcome to take it. Otherwise just say the word and I'll close mine so we don't have two open. Whatever's easiest for you.

I saw your PR (thanks for the credit btw) but I'll take over this PR and have a look at what you added.
You can close yours.
Thanks for the contribution, though! 🙂

This PR introduces a new setting that allows users to hide media that has been requested but is not yet available from the "Discover" home page and related categories.

Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>
…tter type safety

Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>
…y status

Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>
@0xSysR3ll
0xSysR3ll force-pushed the feat-hide-requested-media branch from cfeeb8c to 276853d Compare July 21, 2026 15:54
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.

Filter requested content from Discovery

5 participants