From 8bdc53f45dd0de64b21bf4accba804686a9f9db6 Mon Sep 17 00:00:00 2001 From: Artemy Date: Sun, 2 Apr 2023 10:15:52 +0300 Subject: [PATCH] feat: save pub notes locally Notes are now also saved locally instead of just deleted --- src/App.jsx | 2 +- src/pages/pubNote.jsx | 65 ++++++++++++++++++++++----------------- src/pages/pubNoteSafe.jsx | 4 +-- src/pages/publish.jsx | 4 ++- 4 files changed, 43 insertions(+), 32 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 8a5d693..cd0612f 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -48,7 +48,7 @@ function App() { \r* Публичные заметки доступны только по ссылке. - \r* При переходе по ссылке заметка исчезает, прочесть ее можно только один раз. + \r* При переходе по ссылке заметка сохраняется локально и удаляется с сервера. \r* Не публичные заметки сохраняются локально и не отправляются на сервер.`} diff --git a/src/pages/pubNote.jsx b/src/pages/pubNote.jsx index 678bfdd..850933c 100644 --- a/src/pages/pubNote.jsx +++ b/src/pages/pubNote.jsx @@ -1,6 +1,6 @@ import RenderMarkdown from "../components/markdown"; import { useState } from "react"; -import { useParams } from "react-router-dom"; +import { Navigate, useParams } from "react-router-dom"; import printDate from "../components/utils"; import { ChevronDoubleLeftIcon } from "@heroicons/react/24/outline"; import { Button, IconWithText } from "../components/button"; @@ -8,9 +8,9 @@ import { Button, IconWithText } from "../components/button"; function PubNote() { let params = useParams(); - let [note, setNote] = useState(); + let [note, setNote] = useState(false); - if (!note) + if (note === false) fetch(`/get-note/del/${params.id}`) .then((data) => { data @@ -23,6 +23,7 @@ function PubNote() { text: "Такой публичной заметки не сущуествует", name: "Меня не существует", time: Date.now(), + save: false, }); }); }) @@ -31,35 +32,43 @@ function PubNote() { text: "Такой публичной заметки не сущуествует", name: "Меня не существует", time: Date.now(), + save: false, }); }); - - return ( -
- -
-
-

- {note?.name || "Загрузка..."} -

-
- {printDate(note?.time || Date.now())} + else { + if (note.save !== false) { + localStorage.setItem("NoteName", note.name); + localStorage.setItem("NoteText", note.text); + return ; + } else { + return ( +
+ +
+
+

+ {note.name || "Загрузка..."} +

+
+ {printDate(note.time || Date.now())} +
+
+
+ {note.text || "Загрузка..."} +
-
- {note?.text || "Загрузка..."} -
-
-
- ); + ); + } + } } export default PubNote; diff --git a/src/pages/pubNoteSafe.jsx b/src/pages/pubNoteSafe.jsx index 9d98006..e08d67e 100644 --- a/src/pages/pubNoteSafe.jsx +++ b/src/pages/pubNoteSafe.jsx @@ -9,9 +9,9 @@ import { CopyToClipboard } from "../components/copytocb"; function PubNoteSafe() { let params = useParams(); - let [note, setNote] = useState(); + let [note, setNote] = useState(false); - if (!note) + if (note === false) fetch(`/get-note/safe/${params.id}`) .then((data) => { data diff --git a/src/pages/publish.jsx b/src/pages/publish.jsx index 49fdbfc..f9c1a1d 100644 --- a/src/pages/publish.jsx +++ b/src/pages/publish.jsx @@ -38,7 +38,9 @@ function Publish() { navigate(`/pubNotesSafe/${data.id}`, { replace: true }); }) .catch(() => { - navigate(`/pubError?err=${err}`, { replace: true }); + if (err == false) { + navigate(`/pubError`, { replace: true }); + } else navigate(`/pubError?err=${err}`, { replace: true }); }); }) .catch(() => {