Skip to content

Commit

Permalink
Merge pull request #18 from GTBitsOfGood/kavinphan/nav-bar
Browse files Browse the repository at this point in the history
Add navbar + screens
  • Loading branch information
kavinphan authored Feb 2, 2025
2 parents ea6bbd1 + 52e98f2 commit 1bdfe5c
Show file tree
Hide file tree
Showing 30 changed files with 464 additions and 148 deletions.
14 changes: 14 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"db:view": "npx prisma studio"
},
"dependencies": {
"@phosphor-icons/react": "^2.1.7",
"@prisma/client": "^6.2.1",
"@react-email/render": "1.0.3",
"@sendgrid/mail": "^8.1.4",
Expand Down
9 changes: 9 additions & 0 deletions public/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 9 additions & 0 deletions src/app/account_management/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
"use client";

import LoadingScreen from "@/screens/LoadingScreen";
import dynamic from "next/dynamic";

export default dynamic(() => import("@/screens/AccountManagementScreen"), {
ssr: false,
loading: LoadingScreen,
});
9 changes: 9 additions & 0 deletions src/app/distributions/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
"use client";

import LoadingScreen from "@/screens/LoadingScreen";
import dynamic from "next/dynamic";

export default dynamic(() => import("@/screens/DistributionsScreen"), {
ssr: false,
loading: LoadingScreen,
});
9 changes: 9 additions & 0 deletions src/app/donor_offers/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
"use client";

import LoadingScreen from "@/screens/LoadingScreen";
import dynamic from "next/dynamic";

export default dynamic(() => import("@/screens/DonorOffersScreen"), {
ssr: false,
loading: LoadingScreen,
});
13 changes: 7 additions & 6 deletions src/app/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import type { Metadata } from "next";
import "./globals.css";

import AuthenticationLayout from "@/components/layouts/AuthenticationLayout";
import AuthenticationProvider from "@/components/AuthenticationProvider";
import { Toaster } from "react-hot-toast";
import NavbarLayout from "@/components/NavBarLayout";

export const metadata: Metadata = {
title: "Hope for Haiti",
Expand All @@ -16,12 +17,12 @@ export default function RootLayout({
}>) {
return (
<html lang="en">
<AuthenticationLayout>
<body>
{children}
<body>
<AuthenticationProvider>
<NavbarLayout>{children}</NavbarLayout>
<Toaster position="top-right" />
</body>
</AuthenticationLayout>
</AuthenticationProvider>
</body>
</html>
);
}
9 changes: 9 additions & 0 deletions src/app/map/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
"use client";

import LoadingScreen from "@/screens/LoadingScreen";
import dynamic from "next/dynamic";

export default dynamic(() => import("@/screens/MapScreen"), {
ssr: false,
loading: LoadingScreen,
});
4 changes: 2 additions & 2 deletions src/app/page.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
"use client";

import LoadingPage from "@/screens/LoadingScreen";
import LoadingScreen from "@/screens/LoadingScreen";
import dynamic from "next/dynamic";

export default dynamic(() => import("@/screens/HomeScreen"), {
ssr: false,
loading: LoadingPage,
loading: LoadingScreen,
});
9 changes: 9 additions & 0 deletions src/app/profile/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
"use client";

import LoadingScreen from "@/screens/LoadingScreen";
import dynamic from "next/dynamic";

export default dynamic(() => import("@/screens/ProfileScreen"), {
ssr: false,
loading: LoadingScreen,
});
4 changes: 2 additions & 2 deletions src/app/sign_in/page.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
"use client";

import LoadingPage from "@/screens/LoadingScreen";
import LoadingScreen from "@/screens/LoadingScreen";
import dynamic from "next/dynamic";

export default dynamic(() => import("@/screens/SignInScreen"), {
ssr: false,
loading: LoadingPage,
loading: LoadingScreen,
});
9 changes: 9 additions & 0 deletions src/app/unallocated_items/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
"use client";

import LoadingScreen from "@/screens/LoadingScreen";
import dynamic from "next/dynamic";

export default dynamic(() => import("@/screens/UnallocatedItemsScreen"), {
ssr: false,
loading: LoadingScreen,
});
9 changes: 9 additions & 0 deletions src/app/wishlist/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
"use client";

import LoadingScreen from "@/screens/LoadingScreen";
import dynamic from "next/dynamic";

export default dynamic(() => import("@/screens/WishlistScreen"), {
ssr: false,
loading: LoadingScreen,
});
9 changes: 9 additions & 0 deletions src/app/wishlists/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
"use client";

import LoadingScreen from "@/screens/LoadingScreen";
import dynamic from "next/dynamic";

export default dynamic(() => import("@/screens/WishlistsScreen"), {
ssr: false,
loading: LoadingScreen,
});
39 changes: 0 additions & 39 deletions src/auth/PageHelpers.tsx

This file was deleted.

50 changes: 50 additions & 0 deletions src/components/AuthenticationProvider.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
"use client";

import { SessionProvider } from "next-auth/react";
import { useUser } from "./context/UserContext";
import LoadingScreen from "@/screens/LoadingScreen";
import { useEffect } from "react";
import { usePathname, useRouter } from "next/navigation";

function VerifyAuthentication({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
const pathName = usePathname();
const { loading, user } = useUser();
const router = useRouter();

const onSignInPage = pathName === "/sign_in";

useEffect(() => {
if (loading) return;
if (onSignInPage && user) router.replace("/");
if (!onSignInPage && !user) router.replace("/sign_in");
}, [onSignInPage, loading, user, router]);

if (loading)
return (
<main className="w-screen h-screen">
<LoadingScreen />
</main>
);

if (!onSignInPage && !user) {
return <></>;
}

return children;
}

export default function AuthenticationProvider({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<SessionProvider>
<VerifyAuthentication>{children}</VerifyAuthentication>
</SessionProvider>
);
}
Loading

0 comments on commit 1bdfe5c

Please sign in to comment.