Compare commits
2 commits
a90859e151
...
3de1b8b714
| Author | SHA1 | Date | |
|---|---|---|---|
| 3de1b8b714 | |||
| 33cc62b3fc |
2 changed files with 28 additions and 6 deletions
|
|
@ -37,7 +37,7 @@ var commandBar = new TinyMDE.CommandBar({
|
||||||
'|',
|
'|',
|
||||||
'h1', 'h2',
|
'h1', 'h2',
|
||||||
'|',
|
'|',
|
||||||
'ul', 'ol', {name: "checklist", title: "Check List", action: makeChecklist},
|
'ul', 'ol',
|
||||||
'|',
|
'|',
|
||||||
'blockquote', 'hr',
|
'blockquote', 'hr',
|
||||||
'|',
|
'|',
|
||||||
|
|
@ -45,9 +45,23 @@ var commandBar = new TinyMDE.CommandBar({
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let editTimeout;
|
||||||
|
let autoSaveDelay = 2000;
|
||||||
|
|
||||||
|
tinyMDE.addEventListener("change", function() {
|
||||||
|
clearTimeout(editTimeout);
|
||||||
|
editTimeout = setTimeout(() => {
|
||||||
|
let form = document.querySelector("form");
|
||||||
|
let formData = new FormData(form);
|
||||||
|
|
||||||
|
fetch("{{.urlSave}}", {
|
||||||
|
method: "POST",
|
||||||
|
body: formData,
|
||||||
|
}).then((data) => {
|
||||||
|
console.log("Saved Note")
|
||||||
|
});
|
||||||
|
}, autoSaveDelay);
|
||||||
|
});
|
||||||
|
|
||||||
function makeChecklist(editor) {
|
|
||||||
editor.wrapSelection("* [ ] ", "")
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"forgejo.gwairfelin.com/max/gonotes/internal/conf"
|
"forgejo.gwairfelin.com/max/gonotes/internal/conf"
|
||||||
markdown "github.com/teekennedy/goldmark-markdown"
|
markdown "github.com/teekennedy/goldmark-markdown"
|
||||||
|
|
@ -36,6 +37,7 @@ type Note struct {
|
||||||
Owner string
|
Owner string
|
||||||
Viewers map[string]struct{}
|
Viewers map[string]struct{}
|
||||||
Uid string
|
Uid string
|
||||||
|
LastModified time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
type NoteStore struct {
|
type NoteStore struct {
|
||||||
|
|
@ -63,7 +65,7 @@ func Init() error {
|
||||||
files, err := os.ReadDir(notesDir)
|
files, err := os.ReadDir(notesDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
os.MkdirAll(notesDir, os.FileMode(0750))
|
os.MkdirAll(notesDir, os.FileMode(0o750))
|
||||||
} else {
|
} else {
|
||||||
log.Print(err.Error())
|
log.Print(err.Error())
|
||||||
return err
|
return err
|
||||||
|
|
@ -165,7 +167,7 @@ func (n *Note) Save() error {
|
||||||
return os.WriteFile(
|
return os.WriteFile(
|
||||||
filename,
|
filename,
|
||||||
[]byte(fmt.Sprintf("---\n%s---\n%s", frontmatter, n.Body)),
|
[]byte(fmt.Sprintf("---\n%s---\n%s", frontmatter, n.Body)),
|
||||||
0600,
|
0o600,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -190,6 +192,11 @@ func loadNote(uid string) (*Note, error) {
|
||||||
}
|
}
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
|
|
||||||
|
stat, err := os.Stat(filename)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
bodyScanner := bufio.NewScanner(f)
|
bodyScanner := bufio.NewScanner(f)
|
||||||
body := make([]byte, 0, 10)
|
body := make([]byte, 0, 10)
|
||||||
fullBody := make([]byte, 0, 10)
|
fullBody := make([]byte, 0, 10)
|
||||||
|
|
@ -236,6 +243,7 @@ func loadNote(uid string) (*Note, error) {
|
||||||
note := NewNoteNoSave(title, owner)
|
note := NewNoteNoSave(title, owner)
|
||||||
note.Uid = uid
|
note.Uid = uid
|
||||||
note.Body = body
|
note.Body = body
|
||||||
|
note.LastModified = stat.ModTime()
|
||||||
|
|
||||||
viewers := metaData["viewers"].([]interface{})
|
viewers := metaData["viewers"].([]interface{})
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue