From 500da94583623df3b88908612ea0001bae9bfb7d Mon Sep 17 00:00:00 2001 From: Gauvain Date: Tue, 16 Jun 2026 23:42:20 +0200 Subject: [PATCH] fix(jellyseerr): lock only the server URL, keep the password editable The page greyed out the whole settings screen when the admin locked the server URL, so the user couldn't even type their password to sign in to the pinned server. Now only the URL field is disabled (greyed + "Disabled by admin"); the password input stays editable. --- .../settings/plugins/jellyseerr/page.tsx | 12 +--- components/settings/Jellyseerr.tsx | 60 ++++++++++++------- 2 files changed, 40 insertions(+), 32 deletions(-) diff --git a/app/(auth)/(tabs)/(home)/settings/plugins/jellyseerr/page.tsx b/app/(auth)/(tabs)/(home)/settings/plugins/jellyseerr/page.tsx index 84041fd01..011258d25 100644 --- a/app/(auth)/(tabs)/(home)/settings/plugins/jellyseerr/page.tsx +++ b/app/(auth)/(tabs)/(home)/settings/plugins/jellyseerr/page.tsx @@ -1,11 +1,8 @@ -import { ScrollView } from "react-native"; +import { ScrollView, View } from "react-native"; import { useSafeAreaInsets } from "react-native-safe-area-context"; -import DisabledSetting from "@/components/settings/DisabledSetting"; import { JellyseerrSettings } from "@/components/settings/Jellyseerr"; -import { useSettings } from "@/utils/atoms/settings"; export default function JellyseerrPluginPage() { - const { pluginSettings } = useSettings(); const insets = useSafeAreaInsets(); return ( @@ -16,12 +13,9 @@ export default function JellyseerrPluginPage() { paddingRight: insets.right, }} > - + - + ); } diff --git a/components/settings/Jellyseerr.tsx b/components/settings/Jellyseerr.tsx index 436b46c43..30fbb92b1 100644 --- a/components/settings/Jellyseerr.tsx +++ b/components/settings/Jellyseerr.tsx @@ -20,7 +20,10 @@ export const JellyseerrSettings = () => { const { t } = useTranslation(); const [user] = useAtom(userAtom); - const { settings, updateSettings } = useSettings(); + const { settings, updateSettings, pluginSettings } = useSettings(); + // Only the server URL is admin-lockable — the password stays editable so + // the user can still sign in to the admin-pinned Jellyseerr server. + const urlLocked = pluginSettings?.jellyseerrServerUrl?.locked === true; const [jellyseerrPassword, setJellyseerrPassword] = useState< string | undefined @@ -115,30 +118,41 @@ export const JellyseerrSettings = () => { ) : ( - - {t("home.settings.plugins.jellyseerr.server_url")} - - - - {t("home.settings.plugins.jellyseerr.server_url_hint")} + + + {t("home.settings.plugins.jellyseerr.server_url")} - - + + {t("home.settings.plugins.jellyseerr.server_url_hint")} + + + + {urlLocked && ( + + Disabled by admin + )} - value={jellyseerrServerUrl ?? settings?.jellyseerrServerUrl} - defaultValue={ - settings?.jellyseerrServerUrl ?? jellyseerrServerUrl - } - keyboardType='url' - returnKeyType='done' - autoCapitalize='none' - textContentType='URL' - onChangeText={setjellyseerrServerUrl} - editable={!loginToJellyseerrMutation.isPending} - /> + {t("home.settings.plugins.jellyseerr.password")}