From 9ed49e040e0385187da405319589b8d98d9fe5ca 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 84041fd0..011258d2 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 436b46c4..30fbb92b 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")}