reassembling component structure

This commit is contained in:
Mikayla Dobson
2022-10-07 18:26:59 -05:00
parent d1aaeda445
commit 3ec9af3b4e
14 changed files with 83 additions and 31 deletions

View File

@@ -1,45 +1,30 @@
// react imports // react imports
import { BrowserRouter, Route, Routes } from 'react-router-dom' import { BrowserRouter, Route, Routes } from 'react-router-dom'
import { useEffect, useState } from 'react' import { useEffect } from 'react'
// components // components
import Home from './components/Home' import Home from './components/Home'
import Navbar from './components/Nav/Navbar' import Navbar from './components/Nav/Navbar'
import AuthForm from './components/Auth/AuthForm' import AuthForm from './components/Auth/AuthForm'
import Cart from './components/Cart/Cart'
import AllProducts from './components/Product/AllProducts'
import ProductPage from './components/Product/ProductPage'
import UserProfile from './components/User/UserProfile'
import UserSettings from './components/User/UserSettings'
import OrderHistory from './components/Order/OrderHistory'
import OrderRecord from './components/Order/OrderRecord'
// util // util
import { SupabaseProvider, getSupabaseClient, useSupabase } from './supabase/SupabaseContext' import { SupabaseProvider, getSupabaseClient, useSupabase } from './supabase/SupabaseContext'
import { initialState } from './util/initialState'
import { AppState } from './util/types'
import './App.scss' import './App.scss'
export default function App() { export default function App() {
const [state, setState] = useState<AppState>(initialState);
const supabase = useSupabase(); const supabase = useSupabase();
useEffect(() => { useEffect(() => {
setState((prev: AppState) => { console.log(supabase);
let newUser;
let newSession;
if (supabase) {
newSession = supabase.auth.session();
newUser = supabase.auth.user();
}
return {
...prev,
supabase: supabase,
user: newUser ?? prev.user,
session: newSession ?? prev.session
}
})
}, [supabase]) }, [supabase])
useEffect(() => {
console.log(state);
}, [state]);
return ( return (
<SupabaseProvider value={getSupabaseClient()}> <SupabaseProvider value={getSupabaseClient()}>
<BrowserRouter> <BrowserRouter>
@@ -47,12 +32,26 @@ export default function App() {
<Navbar /> <Navbar />
<Routes> <Routes>
{/* Top level route */} {/* Top level home page */}
<Route path="/" element={<Home />} /> <Route path="/" element={<Home />} />
{/* Second level routes */} {/* Auth routes */}
<Route path="/register" element={<AuthForm format="register" />} /> <Route path="/register" element={<AuthForm format="register" />} />
<Route path="/login" element={<AuthForm format="login" />} /> <Route path="/login" element={<AuthForm format="login" />} />
{/* Product components */}
<Route path="/products" element={<AllProducts />} />
<Route path="/products/:productId" element={<ProductPage />} />
{/* User data */}
<Route path="/my-profile" element={<UserProfile />} />
<Route path="/user-settings" element={<UserSettings />} />
<Route path="/cart" element={<Cart />} />
{/* Order data */}
<Route path="/orders" element={<OrderHistory />} />
<Route path="/orders/:orderId" element={<OrderRecord />} />
</Routes> </Routes>
</div> </div>
</BrowserRouter> </BrowserRouter>

View File

@@ -0,0 +1,5 @@
export default function Cart() {
return (
<h1>Cart!</h1>
)
}

View File

@@ -5,12 +5,13 @@ export default function Home() {
return ( return (
<div> <div>
<h1>Vite + React + Supabase</h1> <h1>The finest spice shop on the internet.</h1>
<p>Check out the user stuff below:</p> <p>Or at the very least, what their website could look like.</p>
<div> <div>
<button onClick={() => navigate('/login')}>Login</button> <button onClick={() => navigate('/products')}>View our Products</button>
<button onClick={() => navigate('/register')}>Register</button> <button onClick={() => navigate('/philosophy')}>Our Philosophy</button>
<button onClick={() => navigate('/contact')}>Contact Us</button>
</div> </div>
</div> </div>
) )

View File

@@ -21,7 +21,12 @@ export default function Navbar() {
<h1><a href="/">Express Spice Market</a></h1> <h1><a href="/">Express Spice Market</a></h1>
<div className="user-data"> <div className="user-data">
{ {
user?.email && <p>{user.email}</p> user?.email && (
<>
<p>{user.email}</p>
<button onClick={() => navigate('/my-profile')}>View Profile</button>
</>
)
} }
{ {
user ? <button onClick={handleLogout}>Log Out</button> : ( user ? <button onClick={handleLogout}>Log Out</button> : (

View File

@@ -0,0 +1,5 @@
export default function OrderHistory() {
return (
<h1>Order History!</h1>
)
}

View File

@@ -0,0 +1,3 @@
export default function OrderRecord() {
return <h1>Order Record!</h1>
}

View File

@@ -0,0 +1,5 @@
export default function AllProducts() {
return (
<h1>All Products!</h1>
)
}

View File

@@ -0,0 +1,5 @@
export default function ProductPage() {
return (
<h1>Product Page!</h1>
)
}

View File

@@ -0,0 +1,21 @@
import { useNavigate } from "react-router-dom";
import { useSupabase } from "../../supabase/SupabaseContext"
export default function UserProfile() {
const supabase = useSupabase();
const navigate = useNavigate();
return (
<section>
<h1>User Profile!</h1>
<p>Your email is {supabase?.auth.user()?.email || "not found"}</p>
<h2>Options:</h2>
<div className="user-profile-options">
<button onClick={() => navigate('/cart')}>View my Cart</button>
<button onClick={() => navigate('/orders')}>View my Order History</button>
<button>Manage Account Settings</button>
</div>
</section>
)
}

View File

@@ -0,0 +1,3 @@
export default function UserSettings() {
return <h1>User Settings!</h1>
}