From 0f35ab45157ebbd5014f01378b63f509df95f586 Mon Sep 17 00:00:00 2001 From: Artemy Date: Mon, 31 Oct 2022 18:31:16 +0300 Subject: [PATCH] feat: publish notes --- src/App.jsx | 3 +++ src/assets/react.svg | 1 - src/components/menu.jsx | 7 ------- src/pages/create.jsx | 1 + src/pages/notes.jsx | 5 ++++- src/pages/publish.jsx | 45 ++++++++++++++++++++++++++++++++++++++++ src/pages/save-local.jsx | 38 ++++++++++++++------------------- vite.config.js | 11 ++++++---- 8 files changed, 76 insertions(+), 35 deletions(-) delete mode 100644 src/assets/react.svg create mode 100644 src/pages/publish.jsx diff --git a/src/App.jsx b/src/App.jsx index e598937..90b3e8c 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -3,6 +3,7 @@ import { Routes, Route } from "react-router-dom"; import Menu from "./components/menu"; import CreateNote from "./pages/create"; import Save from "./pages/save-local"; +import Publish from "./pages/publish"; import Note from "./pages/note"; import Notes from "./pages/notes"; @@ -13,6 +14,7 @@ function App() { Storage.prototype.getObj = function (key) { return JSON.parse(this.getItem(key)) || {}; }; + return (
@@ -20,6 +22,7 @@ function App() { } /> } /> + } /> } />
); } diff --git a/src/pages/create.jsx b/src/pages/create.jsx index 625927d..28db187 100644 --- a/src/pages/create.jsx +++ b/src/pages/create.jsx @@ -29,6 +29,7 @@ function CreateNote() { type="text" className={`mb-2 md:w-1/6 w-full ${inputStyle}`} placeholder="Название заметки..." + maxLength={64} value={localStorage.getItem("NoteName") || ""} onChange={(e) => { localStorage.setItem("NoteName", e.target.value); diff --git a/src/pages/notes.jsx b/src/pages/notes.jsx index 6cd7d3c..a8554ef 100644 --- a/src/pages/notes.jsx +++ b/src/pages/notes.jsx @@ -11,7 +11,10 @@ function Notes() { }) .map((val) => { return ( -
+
{val[1].name}
diff --git a/src/pages/publish.jsx b/src/pages/publish.jsx new file mode 100644 index 0000000..7d6764b --- /dev/null +++ b/src/pages/publish.jsx @@ -0,0 +1,45 @@ +import { useEffect } from "react"; +import { useNavigate } from "react-router-dom"; + +function Publish() { + const navigate = useNavigate(); + let done = false; + + useEffect(() => { + if (!done) { + done = true; + + const note = { + name: localStorage.getItem("NoteName"), + text: localStorage.getItem("NoteText"), + }; + + fetch(`/publish`, { + method: "POST", + headers: { + "Content-Type": "application/json;charset=utf-8", + }, + body: JSON.stringify(note), + }) + .then((data) => { + data + .json() + .then((data) => { + localStorage.removeItem("NoteName"); + localStorage.removeItem("NoteText"); + navigate(`/pubNotes/${data.id}`, { replace: true }); + }) + .catch(() => { + navigate(`/pubError`, { replace: true }); + }); + }) + .catch(() => { + navigate(`/pubError`, { replace: true }); + }); + } + }, []); + + return
; +} + +export default Publish; diff --git a/src/pages/save-local.jsx b/src/pages/save-local.jsx index 983baba..5575a2b 100644 --- a/src/pages/save-local.jsx +++ b/src/pages/save-local.jsx @@ -1,5 +1,4 @@ -import { useEffect } from "react"; -import { useNavigate } from "react-router-dom"; +import { Navigate } from "react-router-dom"; function uuidv4() { return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) => @@ -11,32 +10,27 @@ function uuidv4() { } function Save() { - const navigate = useNavigate(); - let done = false; + let id = uuidv4(); + let name = localStorage.getItem("NoteName"); + let text = localStorage.getItem("NoteText"); + if (!name || !text) return ; - useEffect(() => { - if (!done) { - done = true; - let id = uuidv4(); + let notesObj = localStorage.getObj("Notes"); - let notesObj = localStorage.getObj("Notes"); + notesObj[id] = { + name, + text, + time: Date.now(), + }; - notesObj[`${id}`] = { - name: localStorage.getItem("NoteName"), - text: localStorage.getItem("NoteText"), - time: Date.now(), - }; + console.log(notesObj); - localStorage.setObj("Notes", notesObj); + localStorage.setObj("Notes", notesObj); - localStorage.removeItem("NoteName"); - localStorage.removeItem("NoteText"); + localStorage.removeItem("NoteName"); + localStorage.removeItem("NoteText"); - navigate(`/notes/${id}`, { replace: true }); - } - }, []); - - return
; + return ; } export default Save; diff --git a/vite.config.js b/vite.config.js index b1b5f91..2e06076 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,7 +1,10 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; // https://vitejs.dev/config/ export default defineConfig({ - plugins: [react()] -}) + plugins: [react()], + build: { + outDir: "D:/node-js/anopaper-server/public", + }, +});