diff --git a/components/companion/CompanionLoginScreen.tsx b/components/companion/CompanionLoginScreen.tsx index 95e92dffb..097be6f9e 100644 --- a/components/companion/CompanionLoginScreen.tsx +++ b/components/companion/CompanionLoginScreen.tsx @@ -11,10 +11,13 @@ import { View, } from "react-native"; import { Button } from "@/components/Button"; +import { ServerUrlStatusText } from "@/components/common/ServerUrlStatusText"; import { Text } from "@/components/common/Text"; import useRouter from "@/hooks/useAppRouter"; +import { useServerUrlResolver } from "@/hooks/useServerUrlResolver"; import { apiAtom, userAtom } from "@/providers/JellyfinProvider"; import { sendCredentialsToTV } from "@/utils/pairingService"; +import { jellyfinProbe } from "@/utils/serverUrl/probes/jellyfin"; type ScreenState = | "scanning" @@ -49,6 +52,7 @@ export const CompanionLoginScreen: React.FC = () => { const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [errorMessage, setErrorMessage] = useState(null); + const serverResolver = useServerUrlResolver(jellyfinProbe); // Pre-fill server URL and username from current session useEffect(() => { @@ -405,7 +409,16 @@ export const CompanionLoginScreen: React.FC = () => { autoCorrect={false} keyboardType='url' returnKeyType='next' + onBlur={() => { + const candidate = serverUrl.trim(); + if (candidate) { + serverResolver.resolve(candidate).then((r) => { + if (r.ok) setServerUrl(r.url); + }); + } + }} /> + diff --git a/components/settings/LocalNetworkSettings.tsx b/components/settings/LocalNetworkSettings.tsx index 8bf99dbd7..a24ac3417 100644 --- a/components/settings/LocalNetworkSettings.tsx +++ b/components/settings/LocalNetworkSettings.tsx @@ -12,8 +12,9 @@ import { type LocalNetworkConfig, updateServerLocalConfig, } from "@/utils/secureCredentials"; +import { jellyfinProbe } from "@/utils/serverUrl/probes/jellyfin"; import { Button } from "../Button"; -import { Input } from "../common/Input"; +import { ServerUrlField } from "../common/ServerUrlField"; import { Text } from "../common/Text"; import { ListGroup } from "../list/ListGroup"; import { ListItem } from "../list/ListItem"; @@ -162,13 +163,12 @@ export function LocalNetworkSettings(): React.ReactElement | null { } > - saveConfig({ ...config, localUrl: url })} + probe={jellyfinProbe} + placeholder={t("home.settings.network.local_url_placeholder")} />