From 681172fe8e2881fbbf9975282b95daa36db147f2 Mon Sep 17 00:00:00 2001 From: Pas <74743263+Pasithea0@users.noreply.github.com> Date: Sat, 27 Dec 2025 22:16:52 -0700 Subject: [PATCH] persist entered custom backend url when navigating the site --- src/components/form/BackendSelector.tsx | 23 +++++++++++++++++++---- src/pages/Login.tsx | 9 +++++---- src/pages/Register.tsx | 16 +++++++++------- 3 files changed, 33 insertions(+), 15 deletions(-) diff --git a/src/components/form/BackendSelector.tsx b/src/components/form/BackendSelector.tsx index 8159d5f4..6d304997 100644 --- a/src/components/form/BackendSelector.tsx +++ b/src/components/form/BackendSelector.tsx @@ -100,9 +100,26 @@ export function BackendSelector({ showCustom = true, }: BackendSelectorProps) { const { t } = useTranslation(); - const [customUrl, setCustomUrl] = useState(""); + // Helper to strip protocol from URL for display + const stripProtocol = (url: string | null): string => { + if (!url) return ""; + return url.replace(/^https?:\/\//, ""); + }; + + // Initialize customUrl from selectedUrl if it's a custom URL (not in availableUrls) + const isCustomUrl = selectedUrl && !availableUrls.includes(selectedUrl); + const [customUrl, setCustomUrl] = useState( + isCustomUrl ? stripProtocol(selectedUrl) : "", + ); const [backendOptions, setBackendOptions] = useState([]); + // Update customUrl when selectedUrl changes and it's a custom URL + useEffect(() => { + if (selectedUrl && !availableUrls.includes(selectedUrl)) { + setCustomUrl(stripProtocol(selectedUrl)); + } + }, [selectedUrl, availableUrls]); + // Initialize and fetch meta for backend options useEffect(() => { const fetchMetas = async () => { @@ -142,9 +159,7 @@ export function BackendSelector({ }; const isCustomUrlSelected = - customUrl && - selectedUrl === customUrl && - !availableUrls.includes(selectedUrl); + selectedUrl !== null && !availableUrls.includes(selectedUrl); return (
diff --git a/src/pages/Login.tsx b/src/pages/Login.tsx index 179da392..6d648273 100644 --- a/src/pages/Login.tsx +++ b/src/pages/Login.tsx @@ -18,10 +18,6 @@ import { useAuthStore } from "@/stores/auth"; export function LoginPage() { const navigate = useNavigate(); const { t } = useTranslation(); - const [showBackendSelection, setShowBackendSelection] = useState(true); - const [selectedBackendUrl, setSelectedBackendUrl] = useState( - null, - ); const setBackendUrl = useAuthStore((s) => s.setBackendUrl); const config = conf(); const availableBackends = @@ -37,6 +33,11 @@ export function LoginPage() { currentBackendUrl ?? (availableBackends.length === 1 ? availableBackends[0] : null); + const [showBackendSelection, setShowBackendSelection] = useState(true); + const [selectedBackendUrl, setSelectedBackendUrl] = useState( + currentBackendUrl ?? null, + ); + const handleBackendSelect = (url: string | null) => { setSelectedBackendUrl(url); if (url) { diff --git a/src/pages/Register.tsx b/src/pages/Register.tsx index ec08556a..df485fb3 100644 --- a/src/pages/Register.tsx +++ b/src/pages/Register.tsx @@ -38,14 +38,8 @@ function CaptchaProvider(props: { export function RegisterPage() { const navigate = useNavigate(); const { t } = useTranslation(); - const [step, setStep] = useState(-1); - const [mnemonic, setMnemonic] = useState(null); - const [account, setAccount] = useState(null); - const [siteKey, setSiteKey] = useState(null); - const [selectedBackendUrl, setSelectedBackendUrl] = useState( - null, - ); const setBackendUrl = useAuthStore((s) => s.setBackendUrl); + const currentBackendUrl = useAuthStore((s) => s.backendUrl); const config = conf(); const availableBackends = config.BACKEND_URLS.length > 0 @@ -54,6 +48,14 @@ export function RegisterPage() { ? [config.BACKEND_URL] : []; + const [step, setStep] = useState(-1); + const [mnemonic, setMnemonic] = useState(null); + const [account, setAccount] = useState(null); + const [siteKey, setSiteKey] = useState(null); + const [selectedBackendUrl, setSelectedBackendUrl] = useState( + currentBackendUrl ?? null, + ); + const handleBackendSelect = (url: string | null) => { setSelectedBackendUrl(url); if (url) {