Skip to main content
Sign in
Snippets Groups Projects
Commit 5ea9fde2 authored by alphamine123's avatar alphamine123
Browse files

implement user profile

parent 4a928dd3
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 to comment