-
-
Contact us
+
@@ -94,7 +103,7 @@ const Dashboard = () => {
-
diff --git a/client/src/pages/Profile.jsx b/client/src/pages/Profile.jsx
new file mode 100644
index 00000000..4f46a66f
--- /dev/null
+++ b/client/src/pages/Profile.jsx
@@ -0,0 +1,174 @@
+import React, { useState, useEffect } from 'react';
+import {
+ fetchOneSummary,
+ fetchFavSummaries,
+ fetchAllSummaries,
+ getAllNotes,
+ getNote
+} from "../https/index"
+import { useSelector } from "react-redux";
+import { toast, ToastContainer } from "react-toastify";
+import "react-toastify/dist/ReactToastify.css";
+import ProfileCard from '../components/shared/Card/ProfileCard';
+import axios from "axios";
+
+const Profile = () => {
+ const [activeTab, setActiveTab] = useState('Saved Summaries');
+ const user = useSelector((state) => state.user);
+ const [summaries, setSummaries] = useState([]);
+ const [favSummaries, setFavSummaries] = useState([]);
+ const [notes, setNotes] = useState([]);
+ const [favNotes, setFavNotes] = useState([]);
+
+ const toastOptions = {
+ position: "bottom-right",
+ autoClose: 8000,
+ pauseOnHover: true,
+ draggable: true,
+ theme: "dark",
+ };
+
+ const handleTabClick = (tab) => {
+ setActiveTab(tab);
+ };
+
+ const handleGetAllSummaries = async () => {
+ console.log("in handlegetallsummaries");
+ console.log(user.id);
+ const data = {
+ "userId": user.id,
+ }
+ try {
+ console.log("data", data);
+ const response = await axios.get("http://localhost:5000/summaries/getAll", {
+ data
+ });
+ setSummaries(response); // Assuming response contains an array of summaries
+ console.log(response);
+ toast.success("Successfully retrieved all summaries", toastOptions)
+ alert("Successfully retrieved all summaries");
+ console.log(data);
+ } catch (err) {
+ alert(`Failed to get all summaries: ${err}`);
+ toast.error("Failed to get all summaries", toastOptions)
+ }
+ };
+
+ useEffect(() => {
+ handleGetAllSummaries();
+ // handleGetfavSummaries();
+ // handleGetAllNotes();
+ }, []); // Fetch summaries when the component mounts
+
+ const handleGetfavSummaries = async () => {
+ console.log("in handlegetfavsummaries");
+ const data = {
+ userId: user.id,
+ }
+ try {
+ const response = await fetchFavSummaries(data);
+ setFavSummaries(response); // Assuming response contains an array of summaries
+ console.log(response);
+ toast.success("Successfully retrieved all fav summaries", toastOptions)
+ alert("Successfully retrieved all fav summaries");
+ console.log(data);
+ } catch (err) {
+ alert(`Failed to get all fav summaries: ${err}`);
+ toast.error("Failed to get all fav summaries", toastOptions)
+ }
+ };
+
+ const handleGetAllNotes = async () => {
+ console.log("in handlegetallNotes");
+ const data = {
+ userId: user.id,
+ }
+ try {
+ const response = await getAllNotes(data);
+ setNotes(response);
+ console.log(response);
+ toast.success("Successfully retrieved all notes", toastOptions)
+ alert("Successfully retrieved all notes");
+ console.log(data);
+ } catch (err) {
+ alert(`Failed to get all notes: ${err}`);
+ toast.error("Failed to get all notes", toastOptions)
+ }
+ };
+
+ return (
+
+ {/* Profile Info */}
+
+
Profile
+
+ Email:
+ example@example.com
+
+
+
+
+
+ {/* Tabs */}
+
+
handleTabClick('Saved Summaries')}>
+
Saved Summaries
+
+
handleTabClick('Saved Notes')}>
+
Saved Notes
+
+
handleTabClick('Favorite Summaries')}>
+
Favorite Summaries
+
+
handleTabClick('Favorite Notes')}>
+
Favorite Notes
+
+
+
+ {/* Content */}
+
+ {activeTab === 'Saved Summaries' && (
+
+ {/* Content for Saved Summaries tab */}
+
+ {summaries.map(summary => (
+
+ ))}
+
+
+ )}
+ {activeTab === 'Saved Notes' && (
+
+ {/* Content for Saved Notes tab */}
+
+ {notes.map(note => (
+
+ ))}
+
+
+ )}
+ {activeTab === 'Favorite Summaries' && (
+
+ {/* Content for Favorite Summaries tab */}
+
+ {summaries.map(summary => (
+
+ ))}
+
+
+ )}
+ {activeTab === 'Favorite Notes' && (
+
+ {/* Content for Favorite Notes tab */}
+
+ )}
+
+
+
+
+ );
+};
+
+export default Profile;
diff --git a/server/controllers/auth.js b/server/controllers/auth.js
index dfa72865..a9596d0c 100644
--- a/server/controllers/auth.js
+++ b/server/controllers/auth.js
@@ -100,7 +100,9 @@ const registerUser = async (req, res) => {
httpOnly: true,
});
- const { _password, ...user } = newUser._doc;
+
+ // eslint-disable-next-line no-unused-vars
+ const { _password, ...user } = newUser._doc;
res.status(200).json({
success: true,
diff --git a/server/controllers/note.js b/server/controllers/note.js
index fecc7a4d..13778446 100644
--- a/server/controllers/note.js
+++ b/server/controllers/note.js
@@ -79,7 +79,9 @@ const modifyNote = async (req, res) => {
);
if (noteIndex === -1) {
- return res.status(400).json({ success: false, message: "Note not found" });
+ return res
+ .status(400)
+ .json({ success: false, message: "Note not found" });
}
for (const [key, value] of Object.entries(note)) {
@@ -103,7 +105,7 @@ const modifyNote = async (req, res) => {
const createNote = async (req, res) => {
try {
- console.log("in create note")
+ console.log("in create note");
const { userId, videoId, note } = req.body;
if (!userId || !note || !note.body) {
return res.status(400).json({
@@ -111,10 +113,10 @@ const createNote = async (req, res) => {
message: "User Id, video Id and note body cannot be empty",
});
}
- console.log("creating new note ob")
+ console.log("creating new note ob");
const newNote = { ...note, videoId };
- console.log("finding user")
+ console.log("finding user");
const user = await User.findById(userId);
if (!user) {
return res
@@ -122,12 +124,12 @@ const createNote = async (req, res) => {
.json({ success: false, message: "User not found" });
}
- console.log("adding into database")
+ console.log("adding into database");
user.notes.push(newNote);
await user.save();
- console.log("final step")
+ console.log("final step");
res.status(200).json({
success: true,
message: "Note created successfully",
diff --git a/server/controllers/summary.js b/server/controllers/summary.js
index 43df227c..6107ccee 100644
--- a/server/controllers/summary.js
+++ b/server/controllers/summary.js
@@ -30,7 +30,10 @@ const generateSummary = async (req, res) => {
const fetchAllSummaries = async (req, res) => {
try {
- const { userId } = req.body;
+ console.log("in fetcallsumm backend");
+ console.log("req.body: ", req.body)
+ const { userId } = req.body.data;
+ console.log("userid from api: ", userId);
if (!userId) return res.status(400).send("User ID is required");
// Find user with the given user ID
@@ -47,9 +50,9 @@ const fetchAllSummaries = async (req, res) => {
const summaries = await Summary.find({ _id: { $in: summaryIds } });
console.log("Found the following summaries:");
- console.log(summaries);
return res.status(200).json(summaries);
} catch (error) {
+ console.log("in err block");
console.error("Error occurred while fetching summaries", error);
return res.status(400).send(error.message);
}
@@ -147,7 +150,8 @@ const modifyFavSummaries = async (req, res) => {
console.log(`Favorite attribute for summary ID ${summaryId}
modified to ${!currentFavVal}`);
- return res.status(200).send("Modified summary successfully.");
+
+ return res.status(200).json({ message: "Successfully modified" });
} catch (error) {
console.error(
"Error occurred while modifying favorite attribute",
@@ -160,7 +164,7 @@ const modifyFavSummaries = async (req, res) => {
const saveSummary = async (req, res) => {
try {
const { userId, videoId, summaryBody } = req.body;
- console.log(userId)
+ console.log(userId);
if (!userId) return res.status(400).send("User ID is required");
if (!videoId) return res.status(400).send("Video ID is required");