diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index fadd4e1..6657a80 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -114,7 +114,10 @@ function App() {
/>
}
/>
- } />{" "}
+ }
+ />{" "}
{/* added route for individual group page */}
= ({
+ basketId,
+ memberid,
+ currentUserId,
+}) => {
+ // Initialize the members state with the filtered memberid prop
+ const [members, setMembers] = useState(() =>
+ memberid.filter((member) => member._id.toString() !== currentUserId),
+ );
+
+ useEffect(() => {
+ // This effect runs when memberid prop changes
+ setMembers(
+ memberid.filter((member) => member._id.toString() !== currentUserId),
+ );
+ }, [memberid, currentUserId]);
+
+ // Function to handle button click and log members to the console
+ const handleLogMembers = () => {
+ console.log("Members:", members);
+ };
+ const AddToBasket = async (basketId: string, friendId: string) => {
+ try {
+ const res = await fetch(`http://localhost:3001/baskets/${basketId}`);
+ let basket;
+ if (res.ok) {
+ basket = await res.json();
+ if (!basket.members.includes(friendId)) {
+ basket.members.push(friendId);
+ console.log("Pushed friend ID to basket's member list");
+ const updatedRes1 = await fetch(
+ `http://localhost:3001/baskets/${basketId}`,
+ {
+ method: "PATCH",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({ members: basket.members }),
+ },
+ );
+ if (updatedRes1.ok) {
+ console.log("Friend added to group's member list successfully");
+ } else {
+ console.error("Failed to update group");
+ }
+ } else {
+ console.log("Friend is already in basket");
+ }
+ } else {
+ console.log("Basket not Found");
+ }
+ } catch (error) {
+ console.error("Error adding friend:", error);
+ }
+ };
+
+ return (
+
+
+
+
+
+
+
+
+ Members
+
+
+ {members.map((member) => (
+ -
+ {member.username}
+
+
+ ))}
+
+
+
+
+
+
+ );
+};
+
+export default AddFriendToBasket;
diff --git a/frontend/src/components/Basket.tsx b/frontend/src/components/Basket.tsx
index 14892fd..7db40a3 100644
--- a/frontend/src/components/Basket.tsx
+++ b/frontend/src/components/Basket.tsx
@@ -1,7 +1,6 @@
import {
Avatar,
Box,
- Button,
Divider,
Flex,
Heading,
@@ -12,6 +11,9 @@ import { useEffect, useState } from "react";
import BasketItem from "./BasketItem";
import "../styles/Basket.css";
import NewItemOptions from "./NewItemOptions";
+import EditBasket from "./EditBasket";
+import AddFriendToBasket from "./AddFriendToBasket";
+import { IUser } from "../../../backend/models/userSchema";
export interface Basket {
_id: string; // added id
@@ -26,14 +28,22 @@ interface Props {
basketId: string;
stateObj: { user: any; token: any };
isOwnerView: boolean;
+ groupMembers: IUser[];
+ LoggedInUser: IUser | null;
}
-const BasketComp = ({ basketId, stateObj, isOwnerView }: Props) => {
+const BasketComp = ({
+ basketId,
+ stateObj,
+ groupMembers,
+ LoggedInUser,
+}: Props) => {
const [basketObj, setBasket] = useState({} as Basket);
const [error, setError] = useState({
msg: "",
isErrored: false,
});
+ console.log("basket user", stateObj);
const fetchBasket = () => {
return fetch(`http://localhost:3001/baskets/${basketId}`);
@@ -44,7 +54,7 @@ const BasketComp = ({ basketId, stateObj, isOwnerView }: Props) => {
.then((res) =>
res.status === 200
? res.json()
- : Promise.reject(`Error code ${res.status}`)
+ : Promise.reject(`Error code ${res.status}`),
)
.then((data) => {
setBasket({
@@ -66,7 +76,7 @@ const BasketComp = ({ basketId, stateObj, isOwnerView }: Props) => {
}, [basketId]);
const memberView = `${basketObj.memberIds === undefined ? "none" : basketObj?.memberIds?.length > 1 ? "auto" : "none"}`;
- const groupOwnerView = `${isOwnerView ? "auto" : "none"}`;
+
const basketMemberView = basketObj?.memberIds?.includes(stateObj?.user?._id);
return (
@@ -131,28 +141,19 @@ const BasketComp = ({ basketId, stateObj, isOwnerView }: Props) => {
-
-
+
+
>
diff --git a/frontend/src/components/BasketItem.tsx b/frontend/src/components/BasketItem.tsx
index 0402896..c9d4db2 100644
--- a/frontend/src/components/BasketItem.tsx
+++ b/frontend/src/components/BasketItem.tsx
@@ -33,7 +33,7 @@ const BasketItem = ({ itemId, basketMemberView }: Props) => {
.then((res) =>
res.status === 200
? res.json()
- : Promise.reject(`Error code ${res.status}`)
+ : Promise.reject(`Error code ${res.status}`),
)
.then((data) => {
setItem({
diff --git a/frontend/src/components/EditBasket.tsx b/frontend/src/components/EditBasket.tsx
index 3fa6185..5012766 100644
--- a/frontend/src/components/EditBasket.tsx
+++ b/frontend/src/components/EditBasket.tsx
@@ -115,9 +115,7 @@ const EditBasket: React.FC = ({ basketId }) => {
return (
-
+
= ({ basketId }) => {
>
Delete
-
>
) : (
diff --git a/frontend/src/components/EditGroup.tsx b/frontend/src/components/EditGroup.tsx
index 9f67437..33785e7 100644
--- a/frontend/src/components/EditGroup.tsx
+++ b/frontend/src/components/EditGroup.tsx
@@ -25,7 +25,7 @@ import {} from "@chakra-ui/react";
//Number input for number type
interface Props {
- GroupId: string;
+ GroupId: string | undefined;
}
const Editgroup: React.FC = ({ GroupId }) => {
@@ -116,9 +116,7 @@ const Editgroup: React.FC = ({ GroupId }) => {
return (
-
+
= ({ GroupId }) => {
>
Delete
-
>
) : (
@@ -259,21 +246,7 @@ const Editgroup: React.FC = ({ GroupId }) => {
{" "}
{groupData.groupPub === "true" ? "Private" : "Public"}
-
-
-
+
>
)}
diff --git a/frontend/src/components/EditItem.tsx b/frontend/src/components/EditItem.tsx
index bc0c92f..b2d0058 100644
--- a/frontend/src/components/EditItem.tsx
+++ b/frontend/src/components/EditItem.tsx
@@ -302,9 +302,9 @@ const EditItem: React.FC = ({ itemId }) => {
-
+
+
+
+ Created On
+
+
+ {new Date(group.created).toLocaleDateString()}
+
+
+
+
+ Description
+
+
+ {group.description || "No description given"}
+
+
+
+
Baskets
-
+
+
{baskets.map((basket) => (
))}
@@ -257,6 +270,6 @@ function IndividualGroupPage() {
);
-}
+};
export default IndividualGroupPage;
diff --git a/frontend/src/pages/MyGroupsPage.tsx b/frontend/src/pages/MyGroupsPage.tsx
index 6030819..3086feb 100644
--- a/frontend/src/pages/MyGroupsPage.tsx
+++ b/frontend/src/pages/MyGroupsPage.tsx
@@ -16,6 +16,7 @@ import PageSelector from "../components/PageSelector";
import { Link } from "react-router-dom";
import "../styles/MyGroups.css";
import NewGroupOptions from "../components/NewGroupOptions";
+
import { IGroup } from "../../../backend/models/groupSchema";
import { IUser } from "../../../backend/models/userSchema";
diff --git a/frontend/src/styles/Basket.css b/frontend/src/styles/Basket.css
index a5eadd6..935e3b8 100644
--- a/frontend/src/styles/Basket.css
+++ b/frontend/src/styles/Basket.css
@@ -1,7 +1,7 @@
.basket {
border-color: #c1c1c1;
border-width: 5px;
- overflow: hidden;
+ overflow: scroll;
color: var(--col-secondary);
}