Misc fixes

Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
Émile Ré
2026-03-11 15:57:35 +04:00
parent af17afeffb
commit 38a0f28094
3 changed files with 19 additions and 19 deletions

View File

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

View File

@@ -3,7 +3,7 @@ import { usePageTitle } from "@probo/hooks";
import { useTranslate } from "@probo/i18n"; import { useTranslate } from "@probo/i18n";
import { Button, Field, useToast } from "@probo/ui"; import { Button, Field, useToast } from "@probo/ui";
import { useMutation } from "react-relay"; import { useMutation } from "react-relay";
import { Link, useLocation, useNavigate, useSearchParams } from "react-router"; import { Link, useNavigate, useSearchParams } from "react-router";
import { graphql } from "relay-runtime"; import { graphql } from "relay-runtime";
import { z } from "zod"; import { z } from "zod";
@@ -27,7 +27,6 @@ export default function CreatePasswordPage() {
const { toast } = useToast(); const { toast } = useToast();
const [searchParams] = useSearchParams(); const [searchParams] = useSearchParams();
const navigate = useNavigate(); const navigate = useNavigate();
const location = useLocation();
usePageTitle(__("Create Password")); usePageTitle(__("Create Password"));
@@ -62,9 +61,11 @@ export default function CreatePasswordPage() {
description: __("Account created successfully"), description: __("Account created successfully"),
variant: "success", variant: "success",
}); });
searchParams.delete("token");
void navigate({ void navigate({
pathname: "/auth/login", pathname: "/auth/login",
search: location.search, search: "?" + searchParams.toString(),
}, { }, {
replace: true, replace: true,
}); });

View File

@@ -49,9 +49,7 @@ export function AssumePage(props: { queryRef: PreloadedQuery<AssumePageQuery> })
const [searchParams] = useSearchParams(); const [searchParams] = useSearchParams();
const { __ } = useTranslate(); const { __ } = useTranslate();
const safeContinueUrl = useSafeContinueUrl( const safeContinueUrl = useSafeContinueUrl(`/organizations/${organizationId}`);
new URL(window.location.origin + `/organizations/${organizationId}`),
);
const { viewer } = usePreloadedQuery<AssumePageQuery>(assumePageQuery, queryRef); const { viewer } = usePreloadedQuery<AssumePageQuery>(assumePageQuery, queryRef);
const [assumeOrganizationSession] = useMutation<AssumePageMutation>(assumeMutation); const [assumeOrganizationSession] = useMutation<AssumePageMutation>(assumeMutation);