From e41236108a534a4b78017b6160c5752757b4e4b1 Mon Sep 17 00:00:00 2001 From: "santasri.pachhal" Date: Tue, 17 Mar 2026 14:10:53 +0530 Subject: [PATCH] feat: add route constant --- app/new-analysis/page.tsx | 4 +++- app/page.tsx | 3 ++- app/results/[videoId]/page.tsx | 7 ++++--- app/results/page.tsx | 10 ++++++---- app/upload/[videoId]/page.tsx | 3 ++- app/upload/page.tsx | 5 +++-- components/sidebar-navigation.tsx | 16 +++++++++------- utils/routes.ts | 10 ++++++++++ 8 files changed, 39 insertions(+), 19 deletions(-) create mode 100644 utils/routes.ts diff --git a/app/new-analysis/page.tsx b/app/new-analysis/page.tsx index 923d1f2..97904de 100644 --- a/app/new-analysis/page.tsx +++ b/app/new-analysis/page.tsx @@ -7,19 +7,21 @@ import { type SessionContext, saveSession } from "@/lib/api" import { TrendingUp } from "lucide-react" import { PageHeader } from "@/components/page-header" import { PoweredBy } from "@/components/powered-by" +import { ROUTES } from "@/utils/routes" const ProjectSelectionSection = dynamic( () => import("@/components/project-selection-section").then(mod => mod.ProjectSelectionSection), { ssr: false } ) + export default function NewAnalysisPage() { const router = useRouter() const handleSelectionComplete = (session: SessionContext) => { // Save session to storage and navigate to upload page saveSession(session) - router.push("/upload") + router.push(ROUTES.UPLOAD) } return ( diff --git a/app/page.tsx b/app/page.tsx index 0d4a4ac..f6a274f 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,5 +1,6 @@ import { redirect } from "next/navigation" +import { ROUTES } from "@/utils/routes" export default function HomePage() { - redirect("/dashboard") + redirect(ROUTES.DASHBOARD) } diff --git a/app/results/[videoId]/page.tsx b/app/results/[videoId]/page.tsx index fb017b5..c131e82 100644 --- a/app/results/[videoId]/page.tsx +++ b/app/results/[videoId]/page.tsx @@ -15,6 +15,7 @@ import { } from "@/lib/api" import { getVideoFile, clearVideoFile } from "@/lib/video-storage" import { DetectionData, DetectionType } from "@/lib/types" +import { ROUTES } from "@/utils/routes" const API_URL = process.env.NEXT_PUBLIC_API_URL @@ -82,7 +83,7 @@ export default function VideoResultsPage() { } } clearSession() - router.push("/new-analysis") + router.push(ROUTES.NEW_ANALYSIS) } const getTitle = () => { @@ -108,8 +109,8 @@ export default function VideoResultsPage() {

{error}

- - + +
diff --git a/app/results/page.tsx b/app/results/page.tsx index 297daed..69e68d5 100644 --- a/app/results/page.tsx +++ b/app/results/page.tsx @@ -20,6 +20,8 @@ import { DetectionData, DetectionType } from "@/lib/types" const API_URL = process.env.NEXT_PUBLIC_API_URL +import { ROUTES } from "@/utils/routes" + export default function ResultsPage() { const router = useRouter() const [session, setSession] = useState(null) @@ -36,13 +38,13 @@ export default function ResultsPage() { const videoData = loadVideoData() if (!isSessionValid(storedSession) || !videoData) { - router.replace("/new-analysis") + router.replace(ROUTES.NEW_ANALYSIS) return } // If we have a videoId, redirect to the dynamic results page if (videoData.videoId) { - router.replace(`/results/${videoData.videoId}`) + router.replace(`${ROUTES.RESULTS}/${videoData.videoId}`) return } @@ -59,11 +61,11 @@ export default function ResultsPage() { } } clearSession() - router.push("/new-analysis") + router.push(ROUTES.NEW_ANALYSIS) } const handleBackToUpload = () => { - router.push("/upload") + router.push(ROUTES.UPLOAD) } const getTitle = () => { diff --git a/app/upload/[videoId]/page.tsx b/app/upload/[videoId]/page.tsx index b6766ed..9da0f73 100644 --- a/app/upload/[videoId]/page.tsx +++ b/app/upload/[videoId]/page.tsx @@ -13,6 +13,7 @@ import { } from "@/lib/api" import { getVideoFile } from "@/lib/video-storage" import { storeVideoFile } from "@/lib/video-storage" +import { ROUTES } from "@/utils/routes" const API_URL = process.env.NEXT_PUBLIC_API_URL const WS_URL = API_URL?.replace(/^https:\/\//, "wss://").replace(/^http:\/\//, "ws://") @@ -80,7 +81,7 @@ export default function VideoProcessingPage() { }) if (response.status === 404) { - router.replace("/upload") + router.replace(ROUTES.UPLOAD) return } diff --git a/app/upload/page.tsx b/app/upload/page.tsx index 7f40b36..66a9e08 100644 --- a/app/upload/page.tsx +++ b/app/upload/page.tsx @@ -18,6 +18,7 @@ import { saveVideoData, clearSession } from "@/lib/api" +import { ROUTES } from "@/utils/routes" import { storeVideoFile } from "@/lib/video-storage" const API_URL = process.env.NEXT_PUBLIC_API_URL @@ -63,7 +64,7 @@ export default function UploadPage() { useEffect(() => { const storedSession = loadSession() if (!isSessionValid(storedSession)) { - router.replace("/new-analysis") + router.replace(ROUTES.NEW_ANALYSIS) return } setSession(storedSession) @@ -136,7 +137,7 @@ export default function UploadPage() { const handleBackToSelection = () => { clearSession() - router.push("/new-analysis") + router.push(ROUTES.NEW_ANALYSIS) } const getTitle = () => { diff --git a/components/sidebar-navigation.tsx b/components/sidebar-navigation.tsx index 34e8ec3..d775da1 100644 --- a/components/sidebar-navigation.tsx +++ b/components/sidebar-navigation.tsx @@ -4,6 +4,8 @@ import { useRouter, usePathname } from "next/navigation" import { LayoutDashboard, Plus, User, FolderPlus, Package, MapPin } from "lucide-react" import { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from "@/components/ui/tooltip" +import { ROUTES } from "@/utils/routes" + interface NavItem { title: string href: string @@ -15,31 +17,31 @@ interface NavItem { const navItems: NavItem[] = [ { title: "Dashboard", - href: "/dashboard", + href: ROUTES.DASHBOARD, icon: LayoutDashboard, gradient: "from-blue-400 to-indigo-500" }, { title: "Project", - href: "/project", + href: ROUTES.PROJECT, icon: FolderPlus, gradient: "from-blue-400 to-blue-600" }, { title: "Package", - href: "/package", + href: ROUTES.PACKAGE, icon: Package, gradient: "from-violet-400 to-purple-500" }, { title: "Location", - href: "/location", + href: ROUTES.LOCATION, icon: MapPin, gradient: "from-amber-400 to-orange-500" }, { title: "Account", - href: "/account", + href: ROUTES.ACCOUNT, icon: User, gradient: "from-purple-400 to-pink-500", disabled: true @@ -55,7 +57,7 @@ export function SidebarNavigation() { router.push(item.href) } - const isNewAnalysisActive = pathname === "/new-analysis" + const isNewAnalysisActive = pathname === ROUTES.NEW_ANALYSIS return (