@@ -1,22 +1,23 @@
|
||||
import { useMemo } from "react";
|
||||
import { useSearchParams } from "react-router";
|
||||
|
||||
export function useSafeContinueUrl(fallbackUrl?: URL): URL {
|
||||
fallbackUrl = new URL(fallbackUrl ?? window.location.origin, window.location.origin);
|
||||
export function useSafeContinueUrl(fallback?: string): URL {
|
||||
const [searchParams] = useSearchParams();
|
||||
|
||||
const continueUrlParam = searchParams.get("continue");
|
||||
let safeContinueUrl: URL;
|
||||
if (continueUrlParam) {
|
||||
let continueUrl: URL;
|
||||
try {
|
||||
continueUrl = new URL(continueUrlParam, window.location.origin);
|
||||
} catch {
|
||||
continueUrl = fallbackUrl;
|
||||
const safeContinueUrl = useMemo(() => {
|
||||
if (continueUrlParam) {
|
||||
let continueUrl: URL;
|
||||
try {
|
||||
continueUrl = new URL(continueUrlParam, window.location.origin);
|
||||
} catch {
|
||||
continueUrl = new URL(fallback ?? window.location.origin, window.location.origin);
|
||||
}
|
||||
return new URL(continueUrl.pathname + continueUrl.search, window.location.origin);
|
||||
} else {
|
||||
return new URL(fallback ?? window.location.origin, window.location.origin);
|
||||
}
|
||||
safeContinueUrl = new URL(continueUrl.pathname + continueUrl.search, window.location.origin);
|
||||
} else {
|
||||
safeContinueUrl = fallbackUrl;
|
||||
}
|
||||
}, [continueUrlParam, fallback]);
|
||||
|
||||
return safeContinueUrl;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user