Files
alphabreed/hugo/content/notes.html
2026-02-19 18:37:05 +01:00

42 lines
1.0 KiB
HTML

---
title: "Notes"
type: "notes"
---
<main x-data="{
store: null,
notes: '',
needCreate: false,
loaded: false,
async getNotes() {
const notes = await this.store.getNotes();
this.loaded = true;
if (notes === false) {
this.needCreate = true;
return;
}
this.notes = notes;
},
async saveNotes() {
if (!this.loaded)
return;
if (this.needCreate) {
const result = await this.store.createNotes(this.notes);
if (result)
this.needCreate = false;
}
else {
await this.store.updateNotes(this.notes);
}
},
async init() {
this.store = Alpine.store('alphabreed');
this.store.backUrl = '/notes/';
const tokenOK = await this.store.checkToken();
if (!tokenOK)
return;
await this.getNotes();
}
}" @keydown.window.prevent.stop.ctrl.s="saveNotes">
<textarea autocomplete="off" spellcheck="false" autofocus placeholder="Write notes here..." x-model="notes" @input="$store.alphabreed.pending = true" @input.debounce.500ms="saveNotes"></textarea>
<div id="pending" :class="{'show': $store.alphabreed.pending}"></div>
</main>