From 36ee1bcd1b7e424a8cb90e15be0c0f6068f7a447 Mon Sep 17 00:00:00 2001 From: Anderson Shindy Oki Date: Sun, 18 Aug 2024 17:19:38 +0900 Subject: [PATCH] fix: language code nullable values --- frontend/src/components/bazarr/Language.test.tsx | 2 +- frontend/src/components/bazarr/LanguageSelector.tsx | 2 +- frontend/src/components/forms/ItemEditForm.tsx | 2 +- frontend/src/components/forms/MovieUploadForm.tsx | 4 ++-- frontend/src/components/forms/SeriesUploadForm.tsx | 4 ++-- frontend/src/components/forms/TranslationForm.tsx | 6 +++--- frontend/src/components/modals/SubtitleToolsModal.tsx | 2 +- frontend/src/pages/Episodes/components.tsx | 6 +++--- frontend/src/pages/Movies/Details/table.tsx | 6 +++--- frontend/src/pages/Settings/Languages/equals.tsx | 4 +++- frontend/src/pages/Settings/Languages/index.tsx | 4 ++-- frontend/src/pages/Wanted/Movies/index.tsx | 2 +- frontend/src/pages/Wanted/Series/index.tsx | 4 ++-- frontend/src/types/api.d.ts | 2 +- 14 files changed, 26 insertions(+), 24 deletions(-) diff --git a/frontend/src/components/bazarr/Language.test.tsx b/frontend/src/components/bazarr/Language.test.tsx index 2cad5d4c8..6c56bc329 100644 --- a/frontend/src/components/bazarr/Language.test.tsx +++ b/frontend/src/components/bazarr/Language.test.tsx @@ -11,7 +11,7 @@ describe("Language text", () => { it("should show short text", () => { render(); - expect(screen.getByText(testLanguage.code2)).toBeDefined(); + expect(screen.getByText(testLanguage.code2 ?? "")).toBeDefined(); }); it("should show long text", () => { diff --git a/frontend/src/components/bazarr/LanguageSelector.tsx b/frontend/src/components/bazarr/LanguageSelector.tsx index 8954403bd..948aff3ad 100644 --- a/frontend/src/components/bazarr/LanguageSelector.tsx +++ b/frontend/src/components/bazarr/LanguageSelector.tsx @@ -25,7 +25,7 @@ const LanguageSelector: FunctionComponent = ({ const options = useSelectorOptions( filteredData ?? [], (value) => value.name, - (value) => value.code3, + (value) => value.code3 ?? "", ); return ; diff --git a/frontend/src/components/forms/ItemEditForm.tsx b/frontend/src/components/forms/ItemEditForm.tsx index 392338500..41e2a4ffe 100644 --- a/frontend/src/components/forms/ItemEditForm.tsx +++ b/frontend/src/components/forms/ItemEditForm.tsx @@ -44,7 +44,7 @@ const ItemEditForm: FunctionComponent = ({ const options = useSelectorOptions( item?.audio_language ?? [], (v) => v.name, - (v) => v.code2, + (v) => v.code2 ?? "", ); const isOverlayVisible = isPending || isFetching || item === null; diff --git a/frontend/src/components/forms/MovieUploadForm.tsx b/frontend/src/components/forms/MovieUploadForm.tsx index 8e318d7ad..435e344c4 100644 --- a/frontend/src/components/forms/MovieUploadForm.tsx +++ b/frontend/src/components/forms/MovieUploadForm.tsx @@ -90,7 +90,7 @@ const MovieUploadForm: FunctionComponent = ({ const languageOptions = useSelectorOptions( languages, (v) => v.name, - (v) => v.code2, + (v) => v.code2 ?? "", ); const defaultLanguage = useMemo( @@ -282,7 +282,7 @@ const MovieUploadForm: FunctionComponent = ({ task.create(file.name, TaskGroup.UploadSubtitle, upload.mutateAsync, { radarrId, - form: { file, language: language.code2, hi, forced }, + form: { file, language: language.code2 ?? "", hi, forced }, }); }); diff --git a/frontend/src/components/forms/SeriesUploadForm.tsx b/frontend/src/components/forms/SeriesUploadForm.tsx index e4482cab4..d6a1ff48e 100644 --- a/frontend/src/components/forms/SeriesUploadForm.tsx +++ b/frontend/src/components/forms/SeriesUploadForm.tsx @@ -102,7 +102,7 @@ const SeriesUploadForm: FunctionComponent = ({ const languageOptions = useSelectorOptions( languages, (v) => v.name, - (v) => v.code2, + (v) => v.code2 ?? "", ); const defaultLanguage = useMemo( @@ -360,7 +360,7 @@ const SeriesUploadForm: FunctionComponent = ({ episodeId, form: { file, - language: code2, + language: code2 ?? "", hi, forced, }, diff --git a/frontend/src/components/forms/TranslationForm.tsx b/frontend/src/components/forms/TranslationForm.tsx index 20aa08478..7ca859ef3 100644 --- a/frontend/src/components/forms/TranslationForm.tsx +++ b/frontend/src/components/forms/TranslationForm.tsx @@ -145,14 +145,14 @@ const TranslationForm: FunctionComponent = ({ }); const available = useMemo( - () => languages.filter((v) => v.code2 in translations), + () => languages.filter((v) => v.code2 ?? "" in translations), [languages], ); const options = useSelectorOptions( available, (v) => v.name, - (v) => v.code2, + (v) => v.code2 ?? "", ); return ( @@ -164,7 +164,7 @@ const TranslationForm: FunctionComponent = ({ action: "translate", form: { ...s, - language: language.code2, + language: language.code2 ?? "", }, }), ); diff --git a/frontend/src/components/modals/SubtitleToolsModal.tsx b/frontend/src/components/modals/SubtitleToolsModal.tsx index dca20d159..f4e73a880 100644 --- a/frontend/src/components/modals/SubtitleToolsModal.tsx +++ b/frontend/src/components/modals/SubtitleToolsModal.tsx @@ -116,7 +116,7 @@ const SubtitleToolView: FunctionComponent = ({ { id, type, - language: v.code2, + language: v.code2 ?? "", path: v.path, // eslint-disable-next-line camelcase raw_language: v, diff --git a/frontend/src/pages/Episodes/components.tsx b/frontend/src/pages/Episodes/components.tsx index 7b21393fa..c1c7f3bda 100644 --- a/frontend/src/pages/Episodes/components.tsx +++ b/frontend/src/pages/Episodes/components.tsx @@ -42,7 +42,7 @@ export const Subtitle: FunctionComponent = ({ list.push({ id: episodeId, type: "episode", - language: subtitle.code2, + language: subtitle.code2 ?? "", path: subtitle.path, forced: toPython(subtitle.forced), hi: toPython(subtitle.hi), @@ -80,7 +80,7 @@ export const Subtitle: FunctionComponent = ({ seriesId, episodeId, form: { - language: subtitle.code2, + language: subtitle.code2 ?? "", hi: subtitle.hi, forced: subtitle.forced, }, @@ -95,7 +95,7 @@ export const Subtitle: FunctionComponent = ({ seriesId, episodeId, form: { - language: subtitle.code2, + language: subtitle.code2 ?? "", hi: subtitle.hi, forced: subtitle.forced, path: subtitle.path, diff --git a/frontend/src/pages/Movies/Details/table.tsx b/frontend/src/pages/Movies/Details/table.tsx index 7d0c20a30..be67d04ba 100644 --- a/frontend/src/pages/Movies/Details/table.tsx +++ b/frontend/src/pages/Movies/Details/table.tsx @@ -47,7 +47,7 @@ const Table: FunctionComponent = ({ movie, profile, disabled }) => { type: "movie", path, id: movie.radarrId, - language: code2, + language: code2 ?? "", forced: toPython(forced), hi: toPython(hi), }); @@ -76,7 +76,7 @@ const Table: FunctionComponent = ({ movie, profile, disabled }) => { { radarrId, form: { - language: code2, + language: code2 ?? "", forced, hi, }, @@ -99,7 +99,7 @@ const Table: FunctionComponent = ({ movie, profile, disabled }) => { { radarrId, form: { - language: code2, + language: code2 ?? "", forced, hi, path, diff --git a/frontend/src/pages/Settings/Languages/equals.tsx b/frontend/src/pages/Settings/Languages/equals.tsx index 08642f27e..2c1e65dc6 100644 --- a/frontend/src/pages/Settings/Languages/equals.tsx +++ b/frontend/src/pages/Settings/Languages/equals.tsx @@ -65,7 +65,9 @@ export function decodeEqualData( }; } -function encodeEqualTarget(data: GenericEqualTarget): string { +function encodeEqualTarget( + data: GenericEqualTarget, +): string | null { let text = data.content.code3; if (data.hi) { text += "@hi"; diff --git a/frontend/src/pages/Settings/Languages/index.tsx b/frontend/src/pages/Settings/Languages/index.tsx index 6a5b5309b..d56e128c5 100644 --- a/frontend/src/pages/Settings/Languages/index.tsx +++ b/frontend/src/pages/Settings/Languages/index.tsx @@ -92,7 +92,7 @@ const SettingsLanguagesView: FunctionComponent = () => { label="Treat unknown language audio track as (changing this will trigger missing subtitles calculation)" placeholder="Select languages" options={undAudioLanguages.map((v) => { - return { label: v.name, value: v.code2 }; + return { label: v.name, value: v.code2 ?? "" }; })} settingOptions={{ onSubmit: (v) => (v === null ? "" : v), @@ -105,7 +105,7 @@ const SettingsLanguagesView: FunctionComponent = () => { label="Treat unknown language embedded subtitles track as (changing this will trigger full subtitles indexing using cache)" placeholder="Select languages" options={undEmbeddedSubtitlesLanguages.map((v) => { - return { label: v.name, value: v.code2 }; + return { label: v.name, value: v.code2 ?? "" }; })} settingOptions={{ onSubmit: (v) => (v === null ? "" : v), diff --git a/frontend/src/pages/Wanted/Movies/index.tsx b/frontend/src/pages/Wanted/Movies/index.tsx index c05cfb7c3..59739c6d0 100644 --- a/frontend/src/pages/Wanted/Movies/index.tsx +++ b/frontend/src/pages/Wanted/Movies/index.tsx @@ -59,7 +59,7 @@ const WantedMoviesView: FunctionComponent = () => { { radarrId, form: { - language: item.code2, + language: item.code2 ?? "", hi: item.hi, forced: item.forced, }, diff --git a/frontend/src/pages/Wanted/Series/index.tsx b/frontend/src/pages/Wanted/Series/index.tsx index 0501ecef5..ae6d8a4d4 100644 --- a/frontend/src/pages/Wanted/Series/index.tsx +++ b/frontend/src/pages/Wanted/Series/index.tsx @@ -63,7 +63,7 @@ const WantedSeriesView: FunctionComponent = () => { } - key={BuildKey(idx, item.code2)} + key={BuildKey(idx, item.code2 ?? "")} style={{ cursor: "pointer" }} onClick={() => { task.create( @@ -74,7 +74,7 @@ const WantedSeriesView: FunctionComponent = () => { seriesId, episodeId, form: { - language: item.code2, + language: item.code2 ?? "", hi: item.hi, forced: item.forced, }, diff --git a/frontend/src/types/api.d.ts b/frontend/src/types/api.d.ts index e8bd4483e..418546bb5 100644 --- a/frontend/src/types/api.d.ts +++ b/frontend/src/types/api.d.ts @@ -9,7 +9,7 @@ interface Badge { } declare namespace Language { - type CodeType = string; + type CodeType = string | null; interface Server { code2: CodeType; code3: CodeType;