Skip to content

Commit

Permalink
Merge pull request #39 from yuxunn/issue-38-community-page
Browse files Browse the repository at this point in the history
Issue 38 community page
  • Loading branch information
yuxunn authored Jul 24, 2024
2 parents 1e1f381 + 7ae24e0 commit 5496576
Show file tree
Hide file tree
Showing 10 changed files with 415 additions and 311 deletions.
48 changes: 24 additions & 24 deletions .firebase/hosting.ZnJvbnRlbmQvYnVpbGQ.cache
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
index.html,1721638827092,993f17c9dfd28503b796ffd7cecd9f14d95e4aaa647bb068de9b39f26aabd74f
manifest.json,1721638809613,4e1d3adad9ce7e17c0d13fac197f1c27091906f4ecf3909c9f51247bff345118
asset-manifest.json,1721638827126,25f1d6fa8fdcd670d2b86302d079aefc848c11c2c32805e0d62920f5f011c6bf
logo192.png,1721638809613,f66564670b5bfe49f3f04a5b63107bae60f4a7736f1d3b83aa0115f7acf45150
static/media/finn-the-human-duotone-svgrepo-com.c2af141b053a588ab779463a816a2318.svg,1721638827093,4bf06ca5478d8acf94f058532105301e7a15788e4ec5cab21c2fde365db6f5fa
favicon.ico,1721638809613,5b38de901f18e095d7155d9bd0c6e41618702287d5cb786ee13e9cebfaa99873
static/media/filledheart.172e627cb83b2ea56618.png,1721638827093,aac23cadfc2d053c94915519c1498b31eb0c6fc0a2fce1a3049da282365f73c7
static/js/main.437e403f.js.LICENSE.txt,1721638827093,ad1d5e6af16ffe8e92a428dabf40f561b12ed268b0211d360fc6e7be765028d3
static/media/bin.a6fd29509719f079bfd7.png,1721638827093,c797472c643f6d7334bd1d4a8e624e0c1da0b5485c05206ef4d36aad63dc664c
static/css/main.4bf6b6d0.css.map,1721638827126,aa20225782aebc9af55e7e83978b28bc3b1e71cab1c017739c0f9c27b8fd6e61
static/css/main.4bf6b6d0.css,1721638827094,b8d157edee3f3ecf062c8b896de4af60e56da9378b5852a081c46071295763a8
static/media/teenager.bfacfcc1a78c8289e4aa.png,1721638827093,0cc47e67e35ba42db25364f77407b8125ac118827d89c7bfeb6118d4c368d271
static/media/heart.c412cbaead4744166c20.png,1721638827093,e51cad9407d658e54ba52d6238f5a02a84ca54eb83c938d57f27c63fbe99be89
strawberry-cake.png,1721638809614,d9f87d425d830c81a8c691be543a158d4d8b65516e11b7ca1ae42374a92b78ce
static/media/young.46133b84dc73f8fd4e5d.png,1721638827093,8d68471a561553b4dc5cdc874f9bf173223ee464097a18bb8116cfa99b48cfae
static/media/strawberrycake.0d5ebe11edd5bf600704.png,1721638827093,d9f87d425d830c81a8c691be543a158d4d8b65516e11b7ca1ae42374a92b78ce
static/media/panda.0253ba0e4ab6e6b77c68.png,1721638827093,57b14170fed336abd491746bb7e3aee2379824606a2e7d411cbbb667266cc7a1
static/media/google.cadee8cdb0c0afb1a713.png,1721638827093,60b6f749a9daafdc12e3cdbc6347b7e1ac0ab37e4e4008eb8d9de22601c43080
static/media/dog.f9eb1be80a2c19b336b6.png,1721638827093,0c702e5219385113707a4b9f7be3174bfc3a887709a8db9973b32d36378c9373
static/media/cat.077086a0654634be593c.png,1721638827093,29b869731eb086ee1df0dea2689226cf9944a394d3b402e96dd3b13f8c57d607
static/media/blueberry-pie.f57f327ce0707ce0306f.jpg,1721638827093,88afba500cf8b0535c304a2c8c7b486d95fc7564720402feaea4d6a1cf8294d3
static/media/raspberrytart.9cdf8b62e002147aa401.jpg,1721638827093,c8acd598dcadde275a334e0867e9cc74e1bc1b2adacdc62daaae82b8d47a2ced
static/js/main.437e403f.js,1721638827126,8fb0dfcc80bafc430b79309f6ed4c3aabdd8aa0c196c0d7c57f9e8a20f06ee27
static/js/main.437e403f.js.map,1721638827129,7657a19943340887c10c9e2f10cffc6dd0fd9a76a17c3968874c31f0aac8285c
index.html,1721729005502,70c112ad4195e42b1ad7f19cd778a56fa3d46d68eab5f9abc850288a41c30d5a
asset-manifest.json,1721729005534,f8d6a3e3ee17ac5b3a83303f5274ae5c0793530df038d77229aa6bd0ebbf0240
manifest.json,1721728988354,4e1d3adad9ce7e17c0d13fac197f1c27091906f4ecf3909c9f51247bff345118
logo192.png,1721728988354,f66564670b5bfe49f3f04a5b63107bae60f4a7736f1d3b83aa0115f7acf45150
favicon.ico,1721728988354,5b38de901f18e095d7155d9bd0c6e41618702287d5cb786ee13e9cebfaa99873
static/media/finn-the-human-duotone-svgrepo-com.c2af141b053a588ab779463a816a2318.svg,1721729005503,4bf06ca5478d8acf94f058532105301e7a15788e4ec5cab21c2fde365db6f5fa
static/media/filledheart.172e627cb83b2ea56618.png,1721729005503,aac23cadfc2d053c94915519c1498b31eb0c6fc0a2fce1a3049da282365f73c7
static/media/bin.a6fd29509719f079bfd7.png,1721729005503,c797472c643f6d7334bd1d4a8e624e0c1da0b5485c05206ef4d36aad63dc664c
static/js/main.6e8e5b78.js.LICENSE.txt,1721729005503,ad1d5e6af16ffe8e92a428dabf40f561b12ed268b0211d360fc6e7be765028d3
static/css/main.22bd4496.css,1721729005504,0bf994317306284e45784c49719b2d5b94d0abb65bd882a03f853ef2bb49f8da
static/css/main.22bd4496.css.map,1721729005534,6a6595fc93f360a814ca9eaaf31fa0b23e56e589939a3a12938ea0272896fce7
static/media/young.46133b84dc73f8fd4e5d.png,1721729005503,8d68471a561553b4dc5cdc874f9bf173223ee464097a18bb8116cfa99b48cfae
static/media/strawberrycake.0d5ebe11edd5bf600704.png,1721729005503,d9f87d425d830c81a8c691be543a158d4d8b65516e11b7ca1ae42374a92b78ce
strawberry-cake.png,1721728988355,d9f87d425d830c81a8c691be543a158d4d8b65516e11b7ca1ae42374a92b78ce
static/media/heart.c412cbaead4744166c20.png,1721729005503,e51cad9407d658e54ba52d6238f5a02a84ca54eb83c938d57f27c63fbe99be89
static/media/teenager.bfacfcc1a78c8289e4aa.png,1721729005503,0cc47e67e35ba42db25364f77407b8125ac118827d89c7bfeb6118d4c368d271
static/media/panda.0253ba0e4ab6e6b77c68.png,1721729005503,57b14170fed336abd491746bb7e3aee2379824606a2e7d411cbbb667266cc7a1
static/media/google.cadee8cdb0c0afb1a713.png,1721729005503,60b6f749a9daafdc12e3cdbc6347b7e1ac0ab37e4e4008eb8d9de22601c43080
static/media/dog.f9eb1be80a2c19b336b6.png,1721729005503,0c702e5219385113707a4b9f7be3174bfc3a887709a8db9973b32d36378c9373
static/media/cat.077086a0654634be593c.png,1721729005503,29b869731eb086ee1df0dea2689226cf9944a394d3b402e96dd3b13f8c57d607
static/media/blueberry-pie.f57f327ce0707ce0306f.jpg,1721729005503,88afba500cf8b0535c304a2c8c7b486d95fc7564720402feaea4d6a1cf8294d3
static/media/raspberrytart.9cdf8b62e002147aa401.jpg,1721729005503,c8acd598dcadde275a334e0867e9cc74e1bc1b2adacdc62daaae82b8d47a2ced
static/js/main.6e8e5b78.js,1721729005534,9d552ceae6c8c472db2bd92e6d5494729595ab52f89072bdf311840a35cbf620
static/js/main.6e8e5b78.js.map,1721729005535,80410ce4dc94efff3da51a0a1ef6d23c4d61c18fe8494eb6c0f83fd3e099e6f7
237 changes: 121 additions & 116 deletions frontend/src/App.js
Original file line number Diff line number Diff line change
@@ -1,123 +1,128 @@
import React from 'react';
import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
import MainLayout from './components/mainlayout';
import Signup from './pages/signup';
import LogIn from './pages/login';
import ProtectedRoute from './components/protectedRoute';
import AddRecipePage from './pages/addRecipePage';
import Home from './pages/home';
import Favourites from './pages/favourites';
import Community from './pages/community';
import { SearchProvider } from './components/searchContext';
import Chatbot from './components/chatbot';
import Profile from './pages/profile';
import EditPage from './pages/edit';
import ViewRecipePage from './pages/viewRecipePage';
import Courses from './pages/courses';
import AddEvent from './pages/addEventPage';
import React, { useEffect } from "react";
import {
BrowserRouter as Router,
Route,
Routes,
useNavigate,
} from "react-router-dom";
import MainLayout from "./components/mainlayout";
import Signup from "./pages/signup";
import LogIn from "./pages/login";
import ProtectedRoute from "./components/protectedRoute";
import AddRecipePage from "./pages/addRecipePage";
import Home from "./pages/home";
import Favourites from "./pages/favourites";
import Community from "./pages/community";
import { SearchProvider } from "./components/searchContext";
import Chatbot from "./components/chatbot";
import Profile from "./pages/profile";
import EditPage from "./pages/edit";
import ViewRecipePage from "./pages/viewRecipePage";
import Courses from "./pages/courses";
import AddEvent from "./pages/addEventPage";

const App = () => {
const navigate = useNavigate();

useEffect(() => {
const user = sessionStorage.getItem("sessionKey");
if (!user) {
navigate("/login");
}
}, [navigate]);
return (
<SearchProvider>
<Routes>
<Route path="/login" element={<LogIn />} />
<Route path="/signup" element={<Signup />} />
<Route path="/" element={<LogIn />} />
<Route path="/courses" element={<Courses />} />
<Route path="/addEvent" element={<AddEvent />} />
<Route
path="/home"
element={
<ProtectedRoute
element={
<MainLayout>
<Home />
<Chatbot />
</MainLayout>
}
/>
}
/>
<Route
path="/editRecipe"
element={
<ProtectedRoute
element={
<MainLayout>
<EditPage />
</MainLayout>
}
/>
}
/>
<Route
path="/view"
element={
<ProtectedRoute
element={<ViewRecipePage />}
/>
}
/>
<Route
path="/profile"
element={
<ProtectedRoute
element={<Profile />}
/>
}
/>
<Route
path="/favourites"
element={
<ProtectedRoute
element={
<MainLayout>
<Favourites />
<Chatbot />
</MainLayout>
}
/>
}
/>
<Route
path="/addNewRecipe"
element={
<ProtectedRoute
element={
<MainLayout>
<AddRecipePage />
</MainLayout>
}
/>
}
/>
<Route
path="/community"
element={
<ProtectedRoute
element={
<MainLayout>
<Community />
<Chatbot />
</MainLayout>
}
/>
}
/>
<Route
path="/recipes"
element={
<ProtectedRoute
element={
<MainLayout>
<Home />
<Chatbot />
</MainLayout>
}
/>
}
/>
</Routes>
<Routes>
<Route path="/login" element={<LogIn />} />
<Route path="/signup" element={<Signup />} />
<Route path="/" element={<LogIn />} />
<Route path="/courses" element={<Courses />} />
<Route path="/addEvent" element={<AddEvent />} />
<Route
path="/home"
element={
<ProtectedRoute
element={
<MainLayout>
<Home />
<Chatbot />
</MainLayout>
}
/>
}
/>
<Route
path="/editRecipe"
element={
<ProtectedRoute
element={
<MainLayout>
<EditPage />
</MainLayout>
}
/>
}
/>
<Route
path="/view"
element={<ProtectedRoute element={<ViewRecipePage />} />}
/>
<Route
path="/profile"
element={<ProtectedRoute element={<Profile />} />}
/>
<Route
path="/favourites"
element={
<ProtectedRoute
element={
<MainLayout>
<Favourites />
<Chatbot />
</MainLayout>
}
/>
}
/>
<Route
path="/addNewRecipe"
element={
<ProtectedRoute
element={
<MainLayout>
<AddRecipePage />
</MainLayout>
}
/>
}
/>
<Route
path="/community"
element={
<ProtectedRoute
element={
<MainLayout>
<Community />
<Chatbot />
</MainLayout>
}
/>
}
/>
<Route
path="/recipes"
element={
<ProtectedRoute
element={
<MainLayout>
<Home />
<Chatbot />
</MainLayout>
}
/>
}
/>
</Routes>
</SearchProvider>
);
};
Expand Down
42 changes: 24 additions & 18 deletions frontend/src/components/cardfav.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import pen from '../assets/pen.png';
import { PiBowlFoodBold } from 'react-icons/pi';
import Modal from '../components/modal';

const CardFav = ({ title, level, time, calories, type, rating, description, isFavourited, recId, imageUrl, ingredients }) => {
const CardFav = ({ title, level, time, calories, type, rating, description, isFavourited, recId, imageUrl, ingredients, showEditDeleteButtons = true }) => {
const [isFavourite, setIsFavourite] = useState(isFavourited);
const [docId, setDocId] = useState(null);
const [isModalOpen, setIsModalOpen] = useState(false);
Expand Down Expand Up @@ -113,15 +113,7 @@ const CardFav = ({ title, level, time, calories, type, rating, description, isFa

return (
<div className="bg-white p-4 rounded-lg shadow-md flex flex-col items-center relative">
<div className="absolute top-2 left-2 flex items-center">
<button className="toolbar-button mr-2" onClick={openModal}>
<img
alt="delete"
className="delete"
src={bin}
style={{ width: '24px', height: '24px' }}
/>
</button>
<div className="absolute top-2 left-2">
<button className="toolbar-button" onClick={handleFavouriteClick}>
<img
alt="favourite"
Expand All @@ -130,14 +122,28 @@ const CardFav = ({ title, level, time, calories, type, rating, description, isFa
style={{ width: '24px', height: '24px' }}
/>
</button>
<button className="toolbar-button ml-2" onClick={handleEditClick}>
<img
alt="edit"
className = "edit"
src= {pen}
style={{width:'24px', height:'24px'}}
/>
</button>
</div>
<div className="absolute top-2 right-2 flex items-center">
{showEditDeleteButtons && (
<>
<button className="toolbar-button ml-2" onClick={openModal}>
<img
alt="delete"
className="delete"
src={bin}
style={{ width: '24px', height: '24px' }}
/>
</button>
<button className="toolbar-button ml-2" onClick={handleEditClick}>
<img
alt="edit"
className = "edit"
src= {pen}
style={{width:'24px', height:'24px'}}
/>
</button>
</>
)}
</div>
<div className="w-16 h-16 mb-4">
{imageUrl ? (
Expand Down
Loading

0 comments on commit 5496576

Please sign in to comment.