diff --git a/frontend/app/(auth)/layout.tsx b/frontend/app/(auth)/layout.tsx new file mode 100644 index 0000000..d6d18be --- /dev/null +++ b/frontend/app/(auth)/layout.tsx @@ -0,0 +1,17 @@ +import React from 'react'; +import { cookies } from 'next/headers'; +import { redirect } from 'next/navigation'; + +export default async function LoggedUserLayout({ + children, +}: { + children: React.ReactNode; +}) { + const cookieStore = await cookies(); + const token = cookieStore.get('token')?.value; + if (token) { + redirect('/trips'); + } + + return <>{children}; +} diff --git a/frontend/app/(root)/search/page.tsx b/frontend/app/(root)/search/page.tsx index db92c38..94aeac8 100644 --- a/frontend/app/(root)/search/page.tsx +++ b/frontend/app/(root)/search/page.tsx @@ -4,7 +4,6 @@ import React, { useEffect, useState } from 'react'; import { useSearchParams } from 'next/navigation'; import { UserSearch } from '@/validation/userProfileSchemas'; import UserTile from '@/components/shared/UserTile'; -import { getToken, logout } from '@/lib/auth'; import axiosInstance from '@/lib/axiosInstance'; const SearchPage = () => { @@ -20,15 +19,9 @@ const SearchPage = () => { setLoading(true); setError(null); - const token = await getToken(); - if (!token) { - logout(); - return; - } try { const response = await axiosInstance.get(`user-info/search`, { params: { name: query, page: 0, size: 20 }, - headers: { Authorization: `Bearer ${token}` }, }); setResults(response.data.content || []); } catch (error) { diff --git a/frontend/app/(root)/trips/page.tsx b/frontend/app/(root)/trips/page.tsx index dc16772..c132692 100644 --- a/frontend/app/(root)/trips/page.tsx +++ b/frontend/app/(root)/trips/page.tsx @@ -76,7 +76,7 @@ function Page() { return (
-
+
Add a Trip

{trips && trips.length > 0 && ( -
+
Sort By
+ +
+ +
+ Page Not Found +
+
+
+ ); +} diff --git a/frontend/app/page.tsx b/frontend/app/page.tsx index 1ecc2cf..7ad19b4 100644 --- a/frontend/app/page.tsx +++ b/frontend/app/page.tsx @@ -1,20 +1,46 @@ -import React from 'react'; +'use client'; +import { useEffect } from 'react'; import Link from 'next/link'; +import Image from 'next/image'; +import { getToken } from '@/lib/auth'; +import { useRouter } from 'next/navigation'; export default function Home() { + const router = useRouter(); + + useEffect(() => { + const token = getToken(); + if (token) { + router.push('/trips'); + } + }, [router]); + return ( -
-
-

Group travel, made simple.

-

- Plan, vote on activities, and keep everything organized with - FareShare. From destinations to shared expenses — make every trip - effortless and unforgettable, together. -

+
+
+
+

Group travel, made simple.

+

+ Plan, vote on activities, and keep everything organized with + FareShare. From destinations to shared expenses — make every trip + effortless and unforgettable, together. +

+ +
+ +
+ Trip placeholder +
-
); } diff --git a/frontend/public/assets/lost-bro.png b/frontend/public/assets/lost-bro.png new file mode 100644 index 0000000..7bef7aa Binary files /dev/null and b/frontend/public/assets/lost-bro.png differ