From 62cb758db572fe61034de4026e8bc2700aaddc9f Mon Sep 17 00:00:00 2001 From: Tagaishi Date: Fri, 13 Oct 2023 21:55:39 +0200 Subject: [PATCH 1/5] =?UTF-8?q?=E2=9C=A8=20Adds=20support=20for=20poster?= =?UTF-8?q?=20on=20Radarr=20v5's=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/locales/en/modules/calendar.json | 3 +++ src/modules/common/MediaDisplay.tsx | 7 ++++++- src/widgets/calendar/CalendarTile.tsx | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/public/locales/en/modules/calendar.json b/public/locales/en/modules/calendar.json index 454ab0390..239dc8054 100644 --- a/public/locales/en/modules/calendar.json +++ b/public/locales/en/modules/calendar.json @@ -7,6 +7,9 @@ "useSonarrv4": { "label": "Use Sonarr v4 API" }, + "useRadarrv5": { + "label": "Use Radarr v5 API" + }, "radarrReleaseType": { "label": "Radarr release type", "data":{ diff --git a/src/modules/common/MediaDisplay.tsx b/src/modules/common/MediaDisplay.tsx index b873455c5..363247576 100644 --- a/src/modules/common/MediaDisplay.tsx +++ b/src/modules/common/MediaDisplay.tsx @@ -134,7 +134,12 @@ export function LidarrMediaDisplay(props: any) { export function RadarrMediaDisplay(props: any) { const { media }: { media: any } = props; + const { config } = useConfigContext(); + const calendar = config?.widgets.find((w) => w.type === 'calendar'); + const useRadarrv5 = calendar?.properties.useRadarrv5 ?? false; + // Find a poster CoverType + const poster = media.images.find((image: any) => image.coverType === 'poster'); return ( image.coverType === 'poster')?.url, + poster: useRadarrv5 ? poster.remoteUrl : poster.url, voteAverage: media.ratings.tmdb.value.toString(), imdbId: media.imdbId, type: 'movie', diff --git a/src/widgets/calendar/CalendarTile.tsx b/src/widgets/calendar/CalendarTile.tsx index b12d40bf1..fe4c087f9 100644 --- a/src/widgets/calendar/CalendarTile.tsx +++ b/src/widgets/calendar/CalendarTile.tsx @@ -30,6 +30,10 @@ const definition = defineWidget({ type: 'switch', defaultValue: false, }, + useRadarrv5: { + type: 'switch', + defaultValue: false, + }, radarrReleaseType: { type: 'select', defaultValue: 'inCinemas', From 367d8253a44ff58138144a92d6030d8d12bda30e Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 22 Oct 2023 23:12:49 +0200 Subject: [PATCH 2/5] =?UTF-8?q?=F0=9F=90=9B=20About=20version=20and=20depe?= =?UTF-8?q?ndencies=20not=20present?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/_app.tsx | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 566e02054..87ce414a6 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -16,24 +16,25 @@ import { AppProps } from 'next/app'; import { useEffect, useState } from 'react'; import 'video.js/dist/video-js.css'; import { CommonHead } from '~/components/layout/Meta/CommonHead'; +import { ConfigProvider } from '~/config/provider'; import { env } from '~/env.js'; import { ColorSchemeProvider } from '~/hooks/use-colorscheme'; import { modals } from '~/modals'; +import { usePackageAttributesStore } from '~/tools/client/zustands/usePackageAttributesStore'; +import { ColorTheme } from '~/tools/color'; import { getLanguageByCode } from '~/tools/language'; +import { + ServerSidePackageAttributesType, + getServiceSidePackageAttributes, +} from '~/tools/server/getPackageVersion'; +import { theme } from '~/tools/server/theme/theme'; import { ConfigType } from '~/types/config'; import { api } from '~/utils/api'; import { colorSchemeParser } from '~/validations/user'; import { COOKIE_COLOR_SCHEME_KEY, COOKIE_LOCALE_KEY } from '../../data/constants'; import nextI18nextConfig from '../../next-i18next.config.js'; -import { ConfigProvider } from '~/config/provider'; import '../styles/global.scss'; -import { ColorTheme } from '~/tools/color'; -import { - ServerSidePackageAttributesType, - getServiceSidePackageAttributes, -} from '~/tools/server/getPackageVersion'; -import { theme } from '~/tools/server/theme/theme'; dayjs.extend(locale); dayjs.extend(utc); @@ -89,6 +90,11 @@ function App( }; }, [props.pageProps]); + const { setInitialPackageAttributes } = usePackageAttributesStore(); + useEffect(() => { + setInitialPackageAttributes(props.pageProps.packageAttributes); + }, []); + return ( <> From 6f94d20ab430db5ea824cdb31fad7255a9b39a1d Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 22 Oct 2023 23:30:20 +0200 Subject: [PATCH 3/5] =?UTF-8?q?=F0=9F=90=9B=20500=20error=20when=20saving?= =?UTF-8?q?=20user=20settings,=20Language=20not=20applied=20after=20saving?= =?UTF-8?q?=20user=20preferences?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Preferences/Language/LanguageSelect.tsx | 133 ------------------ src/pages/user/preferences.tsx | 22 ++- src/server/api/routers/user.ts | 11 +- 3 files changed, 30 insertions(+), 136 deletions(-) delete mode 100644 src/components/User/Preferences/Language/LanguageSelect.tsx diff --git a/src/components/User/Preferences/Language/LanguageSelect.tsx b/src/components/User/Preferences/Language/LanguageSelect.tsx deleted file mode 100644 index a0e269230..000000000 --- a/src/components/User/Preferences/Language/LanguageSelect.tsx +++ /dev/null @@ -1,133 +0,0 @@ -import { Group, Select, Stack, Text } from '@mantine/core'; -import { showNotification } from '@mantine/notifications'; -import { getCookie, setCookie } from 'cookies-next'; -import { useSession } from 'next-auth/react'; -import { useTranslation } from 'next-i18next'; -import { useRouter } from 'next/router'; -import { forwardRef, useState } from 'react'; -import { api } from '~/utils/api'; - -import { COOKIE_LOCALE_KEY } from '../../../../../data/constants'; -import { Language, getLanguageByCode } from '~/tools/language'; - -export default function LanguageSelect() { - const { data: sessionData } = useSession(); - const { t, i18n } = useTranslation('settings/general/internationalization'); - const { changeLanguage } = i18n; - const configLocale = getCookie(COOKIE_LOCALE_KEY); - const { locale, locales, pathname, query, asPath, push } = useRouter(); - const [selectedLanguage, setSelectedLanguage] = useState( - sessionData?.user.language ?? (configLocale as string) ?? locale ?? 'en' - ); - const { mutateAsync } = api.user.changeLanguage.useMutation(); - - const data = locales - ? locales.map((localeItem) => ({ - value: localeItem, - label: getLanguageByCode(localeItem).originalName, - icon: getLanguageByCode(localeItem).emoji, - language: getLanguageByCode(localeItem), - })) - : []; - - const onChangeSelect = (value: string) => { - setSelectedLanguage(value); - - const newLanguage = getLanguageByCode(value); - changeLanguage(value) - .then(async () => { - setCookie(COOKIE_LOCALE_KEY, value, { - maxAge: 60 * 60 * 24 * 30, - sameSite: 'strict', - }); - - if (sessionData?.user && new Date(sessionData.expires) > new Date()) { - await mutateAsync({ - language: value, - }); - } - - push( - { - pathname, - query, - }, - asPath, - { locale: value } - ); - - showNotification({ - title: 'Language changed', - message: `You changed the language to '${newLanguage.originalName}'`, - color: 'green', - autoClose: 5000, - }); - }) - .catch((err) => { - showNotification({ - title: 'Failed to change language', - message: `Failed to change to '${newLanguage.originalName}', Error:'${err}`, - color: 'red', - autoClose: 5000, - }); - }); - }; - - return ( - -