diff --git a/package-lock.json b/package-lock.json index 16f6f39..ea74e9a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "ttp-react-forms", + "name": "ttp-client-side-routing", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "ttp-react-forms", + "name": "ttp-client-side-routing", "version": "1.0.0", "license": "ISC", "dependencies": { diff --git a/src/App.jsx b/src/App.jsx index 14763f7..3a3f17c 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -5,10 +5,32 @@ import "./AppStyles.css"; import TaskList from "./components/TaskList"; import AddTask from "./components/AddTask"; import NavBar from "./components/NavBar"; -import { BrowserRouter as Router, Routes } from "react-router"; +import TaskDetails from "./components/TaskDetails" +import { BrowserRouter as Router, Routes, Route } from "react-router"; + +// const initialTasks = [ +// { +// title: "Get eight hours of sleep", +// description: "Sleepy time tea is a must", +// completed: false, +// }, +// { +// title: "EOD survey", +// description: "The EOD survey is always linked in the Discord", +// completed: true, +// }, +// { +// title: "Install PostgreSQL", +// description: "Don't forget your PostgreSQL password!", +// completed: true, +// }, +// ]; const App = () => { const [tasks, setTasks] = useState([]); + const [users, setUsers] = useState([]); + const complete = tasks.filter(task => task.completed === true); + const incomplete = tasks.filter(task => task.completed === false); async function fetchAllTasks() { try { @@ -19,19 +41,34 @@ const App = () => { } } + async function fetchAllUsers() { + try { + const response = await axios.get("http://localhost:8080/api/users"); + setUsers(response.data); + } catch (error) { + console.error("Error fetching users:", error); + } + } + useEffect(() => { fetchAllTasks(); + fetchAllUsers(); }, []); return (
🔄
diff --git a/src/components/TaskDetails.jsx b/src/components/TaskDetails.jsx new file mode 100644 index 0000000..c442326 --- /dev/null +++ b/src/components/TaskDetails.jsx @@ -0,0 +1,57 @@ +import React, { useEffect } from "react"; +import { useParams } from "react-router"; +import axios from "axios"; +import "./TaskCardStyles.css"; + +const TaskDetails = ({ tasks, users, fetchAllTasks }) => { + const params = useParams(); + const id = Number(params.id); + + // useEffect(() => { + // // Fetch the ducks here + // }, []); + + const selectedTask = tasks.find((task) => task.id === id); + const selectedTaskUser = users.find((user) => user.id === selectedTask.userId); + const selectedTaskUserName = selectedTaskUser.name; + + const handleCompleteSelectedTask = async () => { + try { + await axios.patch(`http://localhost:8080/api/tasks/${selectedTask.id}`, { + completed: !selectedTask.completed, + }); + fetchAllTasks(); + } catch (error) { + console.error("Error completing task:", error); + } + }; + + const handleDeleteSelectedTask = async () => { + try { + await axios.delete(`http://localhost:8080/api/tasks/${selectedTask.id}`); + fetchAllTasks(); + } catch (error) { + console.error("Error deleting task:", error); + } + }; + + return ( +🔄
+ ) : ( +✅
+ )} +🗑️
+{selectedTask.description}
+User: {selectedTaskUserName}
+