From 70255a61f13196b8c5c5c9c246ad8efa21500934 Mon Sep 17 00:00:00 2001 From: "Builder.io" Date: Sat, 4 Oct 2025 23:50:30 +0000 Subject: [PATCH] Implement legacy redirect resolution by username cgen-8493dc116d6744669f16f0733550c848 --- client/pages/LegacyPassportRedirect.tsx | 45 ++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/client/pages/LegacyPassportRedirect.tsx b/client/pages/LegacyPassportRedirect.tsx index fd92aac3..41535576 100644 --- a/client/pages/LegacyPassportRedirect.tsx +++ b/client/pages/LegacyPassportRedirect.tsx @@ -1,7 +1,50 @@ +import { useEffect, useState } from "react"; import { Navigate, useParams } from "react-router-dom"; +import LoadingScreen from "@/components/LoadingScreen"; +import { aethexUserService } from "@/lib/aethex-database-adapter"; export default function LegacyPassportRedirect() { const { id } = useParams<{ id?: string }>(); - const target = id ? `/passport/${id}` : "/passport/me"; + const [target, setTarget] = useState(null); + + useEffect(() => { + let cancelled = false; + + const resolveTarget = async () => { + if (!id || id === "me") { + setTarget("/passport/me"); + return; + } + + try { + const profile = await aethexUserService.getProfileById(id); + if (cancelled) { + return; + } + + if (profile?.username) { + setTarget(`/passport/${profile.username}`); + return; + } + } catch (error) { + console.warn("Failed to resolve legacy passport redirect", error); + } + + if (!cancelled) { + setTarget(`/passport/${id}`); + } + }; + + resolveTarget(); + + return () => { + cancelled = true; + }; + }, [id]); + + if (!target) { + return ; + } + return ; }