Skip to content
Snippets Groups Projects
Commit 7d788176 authored by ZAIME Mohammed amine's avatar ZAIME Mohammed amine
Browse files

Merge branch 'features/useProfile' into 'main'

implement user profile

See merge request !21
parents 4a928dd3 5ea9fde2
No related branches found
No related tags found
1 merge request!21implement user profile
......@@ -18,10 +18,9 @@ function App() {
<Navbar />
<main className="flex-grow pt-4">
<Routes>
<Route path="/signin" element={<SignIn />} />
<Route path="/" element={<SignIn />} />
<Route path="/signup" element={<SignUp />} />
<Route path="/" element={<Home />} />
<Route path="/todolist" element={<Todolist />} />
<Route path="/home" element={<Home />} />
</Routes>
</main>
<Footer />
......
......@@ -26,7 +26,7 @@ const Navbar = () => {
const handleLogout = () => {
localStorage.removeItem("user");
setIsAuthenticated(false);
navigate("/signin");
navigate("/");
};
return (
......@@ -34,25 +34,24 @@ const Navbar = () => {
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="flex justify-between h-16">
<div className="flex items-center">
<Link to="/" className="flex items-center gap-2">
<Link to="/home" className="flex items-center gap-2">
<CheckCircle className="h-8 w-8 text-violet-600 dark:text-violet-400" />
<span className="text-xl font-semibold text-gray-900 dark:text-white">TaskMaster</span>
</Link>
</div>
<div className="flex items-center gap-6">
{isAuthenticated ? (
<Link
to="/"
to="/home"
className="text-gray-700 dark:text-white hover:text-violet-600 dark:hover:text-violet-400 px-3 py-2 rounded-md text-sm font-medium"
>
Dashboard
</Link>
<Link
to="/todolist"
className="text-gray-700 dark:text-white hover:text-violet-600 dark:hover:text-violet-400 px-3 py-2 rounded-md text-sm font-medium"
>
Tasks List
</Link>
</Link>) : (<p></p>)}
{/* Bouton Light/Dark Mode */}
<button onClick={toggleTheme} className="p-2 rounded-md bg-gray-200 dark:bg-gray-700">
......@@ -72,7 +71,7 @@ const Navbar = () => {
<>
<Link
to="/signin"
to="/"
className="text-gray-700 dark:text-white hover:text-violet-600 dark:hover:text-violet-400 px-3 py-2 rounded-md text-sm font-medium"
>
Login
......
......@@ -5,9 +5,10 @@ import { useTasks } from "@context/TasksContext";
const TaskStats = () => {
const { tasks } = useTasks();
const completed = tasks.filter(task => task.isCompleted).length;
const incompleted = tasks.filter(task => !task.isCompleted).length;
const total = tasks.length;
const currentUser = JSON.parse(localStorage.getItem("currentUser"));
const completed = tasks.filter(task => task.isCompleted && task.email == currentUser.email).length;
const incompleted = tasks.filter(task => !task.isCompleted && task.email == currentUser.email).length;
const total = tasks.filter(task => task.email == currentUser.email).length;
return (
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
......
......@@ -4,8 +4,10 @@ import { useTasks } from "@context/TasksContext";
const TasksStatPercent = () => {
const { tasks } = useTasks();
const totalTasks = tasks.length;
const completedTasks = tasks.filter(task => task.isCompleted).length;
const currentUser = JSON.parse(localStorage.getItem("currentUser"));
const totalTasks = tasks.filter(task => task.email == currentUser.email).length;
const completedTasks = tasks.filter(task => task.isCompleted && task.email == currentUser.email).length;
const radius = 50;
const circumference = 2 * Math.PI * radius;
......
......@@ -8,7 +8,9 @@ export default function Todolist({ selectedDate=null }) {
const { tasks, setTasks } = useTasks()
const newTask = () => {
const currentUser = JSON.parse(localStorage.getItem("currentUser"));
return {
email : currentUser.email,
name: "",
isCompleted: false,
dueDate: new Date().toISOString().split("T")[0],
......@@ -57,7 +59,8 @@ export default function Todolist({ selectedDate=null }) {
}
const filteredTasks = selectedDate ? tasks.filter(task => {
if (!task.dueDate) return false;
const currentUser = JSON.parse(localStorage.getItem("currentUser"));
if (!task.dueDate || task.email != currentUser.email) return false;
const taskDate = new Date(task.dueDate);
return taskDate.toDateString() === selectedDate.toDateString();
}) : tasks;
......
......@@ -16,7 +16,7 @@ const SignIn = () => {
if (result.success) {
localStorage.setItem("user", JSON.stringify(result.user));
window.dispatchEvent(new Event("storage"));
navigate("/"); // Rediriger vers Home après connexion
navigate("/home"); // Rediriger vers Home après connexion
} else {
setError(result.message);
}
......
......@@ -15,7 +15,7 @@ const SignUp = () => {
const result = signUp(name, email, password);
if (result.success) {
navigate("/signin"); // Rediriger vers Sign In après l'inscription
navigate("/"); // Rediriger vers Sign In après l'inscription
} else {
setError(result.message);
}
......@@ -72,7 +72,7 @@ const SignUp = () => {
<p className="mt-4 text-center text-sm text-gray-600 dark:text-gray-300">
Already have an account?
<Link to="/signin" className="text-blue-600 dark:text-blue-400 ml-1">Sign in</Link>
<Link to="/" className="text-blue-600 dark:text-blue-400 ml-1">Sign in</Link>
</p>
</div>
</div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment