From e828ef370db2df6dd55ce20d8269a66452148a56 Mon Sep 17 00:00:00 2001 From: zadam Date: Fri, 6 Sep 2019 23:36:08 +0200 Subject: [PATCH] note short can lazy load note content --- src/public/javascripts/entities/note_short.js | 22 ++++++++++++++++++- src/services/attributes.js | 1 + 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/public/javascripts/entities/note_short.js b/src/public/javascripts/entities/note_short.js index 0c559657e..4ecf5e0be 100644 --- a/src/public/javascripts/entities/note_short.js +++ b/src/public/javascripts/entities/note_short.js @@ -8,7 +8,6 @@ const RELATION_DEFINITION = 'relation-definition'; /** * This note's representation is used in note tree and is kept in TreeCache. - * Its notable omission is the note content. */ class NoteShort { constructor(treeCache, row) { @@ -25,6 +24,7 @@ class NoteShort { this.mime = row.mime; /** @param {boolean} */ this.archived = row.archived; + /** @param {string} */ this.cssClass = row.cssClass; } @@ -33,6 +33,26 @@ class NoteShort { return this.mime === "application/json"; } + async getContent() { + // we're not caching content since these objects are in treeCache and as such pretty long lived + const note = await server.get("notes/" + this.noteId); + + return note.content; + } + + async getJsonContent() { + const content = await this.getContent(); + + try { + return JSON.parse(content); + } + catch (e) { + console.log(`Cannot parse content of note ${this.noteId}: `, e.message); + + return null; + } + } + /** @returns {Promise} */ async getBranches() { const branchIds = this.treeCache.parents[this.noteId].map( diff --git a/src/services/attributes.js b/src/services/attributes.js index 38d1b6c34..ff6a5e487 100644 --- a/src/services/attributes.js +++ b/src/services/attributes.js @@ -33,6 +33,7 @@ const BUILTIN_ATTRIBUTES = [ { type: 'relation', name: 'runOnAttributeCreation', isDangerous: true }, { type: 'relation', name: 'runOnAttributeChange', isDangerous: true }, { type: 'relation', name: 'template' }, + { type: 'relation', name: 'widget', isDangerous: true }, { type: 'relation', name: 'renderNote', isDangerous: true } ];