Skip to content

Commit 1bdfe5c

Browse files
authored
Merge pull request #18 from GTBitsOfGood/kavinphan/nav-bar
Add navbar + screens
2 parents ea6bbd1 + 52e98f2 commit 1bdfe5c

30 files changed

+464
-148
lines changed

package-lock.json

+14
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"db:view": "npx prisma studio"
1515
},
1616
"dependencies": {
17+
"@phosphor-icons/react": "^2.1.7",
1718
"@prisma/client": "^6.2.1",
1819
"@react-email/render": "1.0.3",
1920
"@sendgrid/mail": "^8.1.4",

public/logo.svg

+9
Loading

src/app/account_management/page.tsx

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
"use client";
2+
3+
import LoadingScreen from "@/screens/LoadingScreen";
4+
import dynamic from "next/dynamic";
5+
6+
export default dynamic(() => import("@/screens/AccountManagementScreen"), {
7+
ssr: false,
8+
loading: LoadingScreen,
9+
});

src/app/distributions/page.tsx

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
"use client";
2+
3+
import LoadingScreen from "@/screens/LoadingScreen";
4+
import dynamic from "next/dynamic";
5+
6+
export default dynamic(() => import("@/screens/DistributionsScreen"), {
7+
ssr: false,
8+
loading: LoadingScreen,
9+
});

src/app/donor_offers/page.tsx

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
"use client";
2+
3+
import LoadingScreen from "@/screens/LoadingScreen";
4+
import dynamic from "next/dynamic";
5+
6+
export default dynamic(() => import("@/screens/DonorOffersScreen"), {
7+
ssr: false,
8+
loading: LoadingScreen,
9+
});

src/app/layout.tsx

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import type { Metadata } from "next";
22
import "./globals.css";
33

4-
import AuthenticationLayout from "@/components/layouts/AuthenticationLayout";
4+
import AuthenticationProvider from "@/components/AuthenticationProvider";
55
import { Toaster } from "react-hot-toast";
6+
import NavbarLayout from "@/components/NavBarLayout";
67

78
export const metadata: Metadata = {
89
title: "Hope for Haiti",
@@ -16,12 +17,12 @@ export default function RootLayout({
1617
}>) {
1718
return (
1819
<html lang="en">
19-
<AuthenticationLayout>
20-
<body>
21-
{children}
20+
<body>
21+
<AuthenticationProvider>
22+
<NavbarLayout>{children}</NavbarLayout>
2223
<Toaster position="top-right" />
23-
</body>
24-
</AuthenticationLayout>
24+
</AuthenticationProvider>
25+
</body>
2526
</html>
2627
);
2728
}

src/app/map/page.tsx

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
"use client";
2+
3+
import LoadingScreen from "@/screens/LoadingScreen";
4+
import dynamic from "next/dynamic";
5+
6+
export default dynamic(() => import("@/screens/MapScreen"), {
7+
ssr: false,
8+
loading: LoadingScreen,
9+
});

src/app/page.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
"use client";
22

3-
import LoadingPage from "@/screens/LoadingScreen";
3+
import LoadingScreen from "@/screens/LoadingScreen";
44
import dynamic from "next/dynamic";
55

66
export default dynamic(() => import("@/screens/HomeScreen"), {
77
ssr: false,
8-
loading: LoadingPage,
8+
loading: LoadingScreen,
99
});

src/app/profile/page.tsx

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
"use client";
2+
3+
import LoadingScreen from "@/screens/LoadingScreen";
4+
import dynamic from "next/dynamic";
5+
6+
export default dynamic(() => import("@/screens/ProfileScreen"), {
7+
ssr: false,
8+
loading: LoadingScreen,
9+
});

src/app/sign_in/page.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
"use client";
22

3-
import LoadingPage from "@/screens/LoadingScreen";
3+
import LoadingScreen from "@/screens/LoadingScreen";
44
import dynamic from "next/dynamic";
55

66
export default dynamic(() => import("@/screens/SignInScreen"), {
77
ssr: false,
8-
loading: LoadingPage,
8+
loading: LoadingScreen,
99
});

src/app/unallocated_items/page.tsx

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
"use client";
2+
3+
import LoadingScreen from "@/screens/LoadingScreen";
4+
import dynamic from "next/dynamic";
5+
6+
export default dynamic(() => import("@/screens/UnallocatedItemsScreen"), {
7+
ssr: false,
8+
loading: LoadingScreen,
9+
});

src/app/wishlist/page.tsx

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
"use client";
2+
3+
import LoadingScreen from "@/screens/LoadingScreen";
4+
import dynamic from "next/dynamic";
5+
6+
export default dynamic(() => import("@/screens/WishlistScreen"), {
7+
ssr: false,
8+
loading: LoadingScreen,
9+
});

src/app/wishlists/page.tsx

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
"use client";
2+
3+
import LoadingScreen from "@/screens/LoadingScreen";
4+
import dynamic from "next/dynamic";
5+
6+
export default dynamic(() => import("@/screens/WishlistsScreen"), {
7+
ssr: false,
8+
loading: LoadingScreen,
9+
});

src/auth/PageHelpers.tsx

-39
This file was deleted.
+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
"use client";
2+
3+
import { SessionProvider } from "next-auth/react";
4+
import { useUser } from "./context/UserContext";
5+
import LoadingScreen from "@/screens/LoadingScreen";
6+
import { useEffect } from "react";
7+
import { usePathname, useRouter } from "next/navigation";
8+
9+
function VerifyAuthentication({
10+
children,
11+
}: Readonly<{
12+
children: React.ReactNode;
13+
}>) {
14+
const pathName = usePathname();
15+
const { loading, user } = useUser();
16+
const router = useRouter();
17+
18+
const onSignInPage = pathName === "/sign_in";
19+
20+
useEffect(() => {
21+
if (loading) return;
22+
if (onSignInPage && user) router.replace("/");
23+
if (!onSignInPage && !user) router.replace("/sign_in");
24+
}, [onSignInPage, loading, user, router]);
25+
26+
if (loading)
27+
return (
28+
<main className="w-screen h-screen">
29+
<LoadingScreen />
30+
</main>
31+
);
32+
33+
if (!onSignInPage && !user) {
34+
return <></>;
35+
}
36+
37+
return children;
38+
}
39+
40+
export default function AuthenticationProvider({
41+
children,
42+
}: Readonly<{
43+
children: React.ReactNode;
44+
}>) {
45+
return (
46+
<SessionProvider>
47+
<VerifyAuthentication>{children}</VerifyAuthentication>
48+
</SessionProvider>
49+
);
50+
}

0 commit comments

Comments
 (0)