diff --git a/backend/app/routers/portal.py b/backend/app/routers/portal.py index ef948b3..facdfb5 100644 --- a/backend/app/routers/portal.py +++ b/backend/app/routers/portal.py @@ -71,6 +71,7 @@ PORTAL_ISSUE_TYPES = { "transcode", "service_unavailable", "broken_media", + "wrong_content", "audio", "subtitle", "quality", diff --git a/frontend/app/portal/PortalClient.tsx b/frontend/app/portal/PortalClient.tsx index 34cf9ed..90ea6da 100644 --- a/frontend/app/portal/PortalClient.tsx +++ b/frontend/app/portal/PortalClient.tsx @@ -118,6 +118,7 @@ type DiscoveryResult = { type IssueCategoryId = | 'broken_media' + | 'wrong_content' | 'missing_content' | 'audio' | 'subtitle' @@ -200,6 +201,15 @@ const ISSUE_CATEGORIES: Array<{ issueType: 'broken_media', titlePrefix: 'Replace media', }, + { + id: 'wrong_content', + marker: 'WRONG FILE', + label: 'Wrong thing downloaded', + description: 'The movie, episode, cut, or edition does not match what it should be.', + outcome: 'The incorrectly matched file will be replaced automatically.', + issueType: 'wrong_content', + titlePrefix: 'Wrong download', + }, { id: 'missing_content', marker: 'MISSING', @@ -249,6 +259,7 @@ const ISSUE_CATEGORIES: Array<{ const ISSUE_SYMPTOMS: Record = { broken_media: ['Visual artefacts or corruption', 'Freezes at the same point', 'Stops before the end', 'File will not play'], + wrong_content: ['Different movie or show', 'Wrong episode', 'Episodes are labelled incorrectly', 'Wrong cut or edition'], missing_content: ['Entire title is missing', 'Season is missing', 'Episode is missing', 'Part or edition is missing'], audio: ['No audio', 'Wrong language', 'Commentary track only', 'Audio is out of sync', 'Audio is distorted'], subtitle: ['Subtitles are missing', 'Wrong subtitles', 'Subtitles are out of sync', 'Forced subtitles are missing'], @@ -264,6 +275,7 @@ const ISSUE_TYPE_LABELS: Record = { transcode: 'Transcoding', service_unavailable: 'Server unavailable', broken_media: 'Broken media', + wrong_content: 'Wrong download', missing_content: 'Missing content', audio: 'Audio', subtitle: 'Subtitles', @@ -502,11 +514,13 @@ export default function PortalClient({ workspace }: PortalClientProps) { const issueNeedsMediaTitle = Boolean(issueCategory) const issueRequiresExistingFile = issueCategory === 'broken_media' || + issueCategory === 'wrong_content' || issueCategory === 'audio' || issueCategory === 'subtitle' || issueCategory === 'playback' const issueSupportsReplacement = issueCategory === 'broken_media' || + issueCategory === 'wrong_content' || issueCategory === 'audio' || (issueCategory === 'playback' && mediaServerStatus?.status !== 'down') const selectedEpisodeOptions = (issueOptions?.episodes ?? []).filter((episode) =>