From 661a34218cda516275dfb48cf4dcdfe2ac53864f Mon Sep 17 00:00:00 2001 From: gavinlin24 Date: Wed, 8 Jan 2025 16:50:23 -0800 Subject: [PATCH 1/7] New Reaction Event Card Created new event card with like/dislike button --- backend/controllers/reactionsController.js | 0 backend/models/reactions.js | 22 + .../src/components/Button/ThumbButtons.tsx | 46 +++ frontend/src/components/Event/EventRating.tsx | 389 ++++++++++++++++++ .../components/Membership/EventsAttended.tsx | 4 +- 5 files changed, 459 insertions(+), 2 deletions(-) create mode 100644 backend/controllers/reactionsController.js create mode 100644 backend/models/reactions.js create mode 100644 frontend/src/components/Button/ThumbButtons.tsx create mode 100644 frontend/src/components/Event/EventRating.tsx diff --git a/backend/controllers/reactionsController.js b/backend/controllers/reactionsController.js new file mode 100644 index 00000000..e69de29b diff --git a/backend/models/reactions.js b/backend/models/reactions.js new file mode 100644 index 00000000..2e876303 --- /dev/null +++ b/backend/models/reactions.js @@ -0,0 +1,22 @@ +import { Schema, model } from 'mongoose'; + +const reactionsSchema = new Schema({ + userId: { + type: mongoose.Schema.Types.ObjectId, + ref: 'User', + required: true + }, + eventId: { + type: mongoose.Schema.Types.ObjectId, + ref: 'Event', + required: true + }, + reactionType: { + type: Number, + enum: [1, -1], // 1 = like, -1 = dislike + required: true + } +}); + +// Export model +export default model('Reactions', reactionsSchema); \ No newline at end of file diff --git a/frontend/src/components/Button/ThumbButtons.tsx b/frontend/src/components/Button/ThumbButtons.tsx new file mode 100644 index 00000000..d60f04a9 --- /dev/null +++ b/frontend/src/components/Button/ThumbButtons.tsx @@ -0,0 +1,46 @@ +import React, { useState } from "react"; +import ThumbUpIcon from "@mui/icons-material/ThumbUp"; +import ThumbDownIcon from "@mui/icons-material/ThumbDown"; +import Button from "@mui/material/Button"; +import Stack from "@mui/material/Stack"; + +const ThumbButtons = () => { + const [selected, setSelected] = useState<"up" | "down" | null>(null); + + const handleThumbUp = () => { + setSelected(selected === "up" ? null : "up"); + }; + + const handleThumbDown = () => { + setSelected(selected === "down" ? null : "down"); + }; + + return ( + + {/* Thumbs Up Button */} +