diff --git a/code/frontend/src/pages/Home.jsx b/code/frontend/src/pages/Home.jsx index b7aa5de..6e66429 100644 --- a/code/frontend/src/pages/Home.jsx +++ b/code/frontend/src/pages/Home.jsx @@ -1,9 +1,12 @@ import { useAuth } from "../contexts/AuthContext"; import { useState, useEffect } from "react"; import { useNavigate } from "react-router-dom"; -import { Tabs, Tab, Snackbar, Alert, IconButton, Button } from "@mui/material"; +import { Tabs, Tab, Snackbar, Alert, IconButton, Button, TextField } from "@mui/material"; import { styled } from "@mui/material/styles"; import LogoutIcon from "@mui/icons-material/Logout"; +import EditIcon from "@mui/icons-material/Edit"; +import SaveIcon from "@mui/icons-material/Save"; +import CancelIcon from "@mui/icons-material/Cancel"; import { activityService } from "../services/activityService"; import AvatarUpload from "../components/Avator"; import ParticipantsList from "../components/ParticipantsList"; @@ -39,6 +42,14 @@ export default function Home() { const [value, setValue] = useState(0); const [participantActivities, setParticipantActivities] = useState([]); const [recentActivities, setRecentActivities] = useState([]); + const [editingActivityId, setEditingActivityId] = useState(null); + const [editFormData, setEditFormData] = useState({ + name: "", + description: "", + location: "", + startDateTime: "", + endDateTime: "", + }); const [notification, setNotification] = useState({ open: false, message: "", @@ -256,6 +267,75 @@ export default function Home() { navigate("/create-activity"); }; + const handleEditClick = (activity) => { + setEditingActivityId(activity.activityId); + setEditFormData({ + name: activity.name, + description: activity.description, + location: activity.location, + startDateTime: activity.startDateTime.replace(" ", "T"), + endDateTime: activity.endDateTime.replace(" ", "T"), + }); + }; + + const handleCancelEdit = () => { + setEditingActivityId(null); + setEditFormData({ + name: "", + description: "", + location: "", + startDateTime: "", + endDateTime: "", + }); + }; + + const handleEditInputChange = (e) => { + const { name, value } = e.target; + setEditFormData((prev) => ({ + ...prev, + [name]: value, + })); + }; + + const handleSaveEdit = async (activityId) => { + try { + // Convert datetime-local format to the required format (YYYY-MM-DD HH:MM) + const formatDateTime = (dateTimeStr) => { + const date = new Date(dateTimeStr); + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, "0"); + const day = String(date.getDate()).padStart(2, "0"); + const hours = String(date.getHours()).padStart(2, "0"); + const minutes = String(date.getMinutes()).padStart(2, "0"); + return `${year}-${month}-${day} ${hours}:${minutes}`; + }; + + const activityData = { + ...editFormData, + startDateTime: formatDateTime(editFormData.startDateTime), + endDateTime: formatDateTime(editFormData.endDateTime), + }; + + await activityService.updateActivity(activityId, activityData); + setEditingActivityId(null); + // Refresh activities + const activities = await activityService.getParticipantActivities(); + setParticipantActivities(activities); + setNotification({ + open: true, + message: "Activity updated successfully", + severity: "success", + }); + } catch (error) { + console.error("Error updating activity:", error); + setNotification({ + open: true, + message: error.response?.data?.message || "Failed to update activity", + severity: "error", + }); + } + }; + return (
{activity.description}
-{activity.description}
+