From 31a991cd69655a3ce301931406363e4ab0d5a9a2 Mon Sep 17 00:00:00 2001 From: Adam Veldhousen Date: Tue, 21 Jan 2020 00:33:24 -0600 Subject: [PATCH] works but totally sucks and needs a rewrite --- package.json | 4 + src/App.js | 42 +++-- .../EditableNoteArea/EditableNoteArea.css | 1 + .../EditableNoteArea/EditableNoteArea.js | 13 +- src/components/NoteContent/NoteContent.js | 3 +- src/components/NoteList/NoteList.js | 2 +- src/index.js | 9 +- src/server/{notes => backend}/index.js | 11 +- src/server/backend/notes.js | 95 ++++++++++ src/server/backend/settings.js | 9 + src/server/backend/tags.js | 59 ++++++ src/server/index.js | 5 +- src/server/notes/notes.js | 175 ------------------ src/server/notes/settings.js | 4 - src/server/notes/tags.js | 0 src/server/preload.js | 7 +- src/state/index.js | 18 +- src/state/{actions.js => notes.js} | 22 ++- src/state/settings.js | 22 +++ yarn.lock | 58 +++++- 20 files changed, 338 insertions(+), 221 deletions(-) rename src/server/{notes => backend}/index.js (69%) create mode 100644 src/server/backend/notes.js create mode 100755 src/server/backend/settings.js create mode 100755 src/server/backend/tags.js delete mode 100644 src/server/notes/notes.js delete mode 100755 src/server/notes/settings.js delete mode 100755 src/server/notes/tags.js rename src/state/{actions.js => notes.js} (78%) create mode 100644 src/state/settings.js diff --git a/package.json b/package.json index 6884391..01b38b9 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,11 @@ "react": "^16.12.0", "react-dom": "^16.12.0", "react-markdown": "^4.3.1", + "react-redux": "^7.1.3", "react-scripts": "3.3.0", + "redux": "^4.0.5", + "redux-logger": "^3.0.6", + "redux-thunk": "^2.3.0", "weedux": "^3.5.3-beta" }, "scripts": { diff --git a/src/App.js b/src/App.js index aa2fe2c..573ebbe 100644 --- a/src/App.js +++ b/src/App.js @@ -1,6 +1,7 @@ import React, { PureComponent } from "react"; -import { connect, bindActionCreators } from "weedux"; -import { store, actions } from "./state/index.js"; +import { connect } from "react-redux"; +import { bindActionCreators } from "redux"; +import { actions } from "./state/index.js"; import debounce from "lodash.debounce"; import NoteList from "./components/NoteList/NoteList"; @@ -8,10 +9,9 @@ import NoteContent from "./components/NoteContent/NoteContent"; import Omnibar from "./components/Omnibar/Omnibar"; import "./App.css"; -import { getNotes } from "./state/api.js"; class App extends PureComponent { - defaultProps = { notes: [] }; + static defaultProps = { selectedNote: null, notes: [], settings: {} }; state = { filter: "" }; @@ -23,9 +23,8 @@ class App extends PureComponent { handleSearch = text => this.setState({ filter: text.toLocaleLowerCase() }); handleCreate = title => { - const { createNote } = this.props; - createNote({ title, content: "", tags: [] }); - getNotes(); + const { upsertNote } = this.props; + upsertNote({ title, content: "", tags: [] }); }; handleSelectNote = title => { @@ -34,13 +33,13 @@ class App extends PureComponent { }; handleSaveNoteContent = content => { - const { updateNote, selectedNote } = this.props; - updateNote({ ...selectedNote, content }); + const { upsertNote, selectedNote } = this.props; + upsertNote({ ...selectedNote, content }); }; - handleTagUpdate = ({ title, newTags }) => { - const { updateTags } = this.props; - updateTags({ title, tags: newTags }); + handleTagUpdate = ({ title, content, newTags }) => { + const { upsertNote } = this.props; + upsertNote({ title, content, tags: newTags }); }; applyFilter = (notes = [], filter = "") => @@ -52,9 +51,15 @@ class App extends PureComponent { ); render() { - const { notes, selectedNote } = this.props; + const { notes, selectedNote, settings } = this.props; + const { autoSaveDelay } = settings; + // const handleSave = debounce( + // this.handleSaveNoteContent, + // autoSaveDelay || 1000 + // ); + const handleSave = this.handleSaveNoteContent; const { filter } = this.state; - const handleSave = debounce(this.handleSaveNoteContent, 250); + console.log("note", selectedNote); return (
@@ -72,15 +77,18 @@ class App extends PureComponent { onTagUpdate={this.handleTagUpdate} selectedNote={selectedNote} /> - +
); } } -const ms2p = s => s; +const ms2p = s => { + const { notes, settings } = s; + return { ...notes, settings: { ...settings.settings } }; +}; const md2p = dispatch => bindActionCreators({ ...actions }, dispatch); -export default connect(ms2p, md2p, store)(App); +export default connect(ms2p, md2p)(App); diff --git a/src/components/EditableNoteArea/EditableNoteArea.css b/src/components/EditableNoteArea/EditableNoteArea.css index 6b3b7be..2ff3a2c 100644 --- a/src/components/EditableNoteArea/EditableNoteArea.css +++ b/src/components/EditableNoteArea/EditableNoteArea.css @@ -18,6 +18,7 @@ border: none; background-color: black; color: white; + resize: none; } .EditableNoteArea .markdownPreview { diff --git a/src/components/EditableNoteArea/EditableNoteArea.js b/src/components/EditableNoteArea/EditableNoteArea.js index 88b59db..8cbdd60 100644 --- a/src/components/EditableNoteArea/EditableNoteArea.js +++ b/src/components/EditableNoteArea/EditableNoteArea.js @@ -1,21 +1,26 @@ -import React from "react"; +import React, { useState } from "react"; import ReactMarkdown from "react-markdown"; import { noop } from "../../utils"; import "./EditableNoteArea.css"; export default function EditableNoteArea({ - content = null, + content = "", onSave = noop, preview = false }) { - const updateContent = ({ target: { value } }) => onSave(value); + // const [newContent, setNewContent] = useState(content); + const updateContent = ({ target: { value } }) => { + // setNewContent(value); + onSave(value); + }; return (
{!preview ? (