From 174ea24f4e0cfd6792e955a0026d5fe8c79a1091 Mon Sep 17 00:00:00 2001 From: Sergey Elpashev Date: Mon, 21 Apr 2025 16:16:52 +0300 Subject: [PATCH] feat: save tasks in localstorage --- src/pages/profile_tasks.tsx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/pages/profile_tasks.tsx b/src/pages/profile_tasks.tsx index 8643693..41e90dc 100644 --- a/src/pages/profile_tasks.tsx +++ b/src/pages/profile_tasks.tsx @@ -1,4 +1,5 @@ import Task from "@/components/task"; + import Button from "@/components/ui/Button"; import ModalWindow from "@/components/ui/Modal"; import { withTitle } from "@/constructors/Component"; @@ -14,7 +15,7 @@ import { PencilIcon, } from "@heroicons/react/24/outline"; import { FunctionComponent } from "preact"; -import { useMemo, useRef, useState } from "preact/hooks"; +import { useEffect, useMemo, useRef, useState } from "preact/hooks"; import { ITask } from "./profile_tasks.dto"; import classes from "./profile_tasks.module.scss"; @@ -51,7 +52,16 @@ const ProfileTasks: FunctionComponent = () => { const formatter = new Intl.DateTimeFormat("ru-RU", { month: "long", day: "numeric" }); return formatter.format(date); }, []); - const [tasks, setTasks] = useState(example_tasks); + const init_tasks: ITask[] = localStorage.getItem("tasks") + ? JSON.parse(localStorage.getItem("tasks") as string) + : example_tasks; + init_tasks.forEach((task) => { + task.date = new Date(task.date); + }); + const [tasks, setTasks] = useState(init_tasks); + useEffect(() => { + localStorage.setItem("tasks", JSON.stringify(tasks)); + }, [tasks]); const [openModal, setIsOpen] = useState(false); const [isEdit, setIsEdit] = useState(false); const [isCreating, setIsCreating] = useState(false);