diff --git a/src/public/javascripts/services/attributes.js b/src/public/javascripts/services/attributes.js index 3b184a917..d9232d0f4 100644 --- a/src/public/javascripts/services/attributes.js +++ b/src/public/javascripts/services/attributes.js @@ -13,13 +13,25 @@ const $savedIndicator = $("#saved-indicator"); let attributePromise; -async function refreshAttributes() { +function invalidateAttributes() { + attributePromise = null; +} + +function reloadAttributes() { attributePromise = server.get('notes/' + noteDetailService.getCurrentNoteId() + '/attributes'); +} + +async function refreshAttributes() { + reloadAttributes(); await showAttributes(); } async function getAttributes() { + if (!attributePromise) { + reloadAttributes(); + } + return await attributePromise; } @@ -286,5 +298,6 @@ async function promotedAttributeChanged(event) { export default { getAttributes, showAttributes, - refreshAttributes + refreshAttributes, + invalidateAttributes } \ No newline at end of file diff --git a/src/public/javascripts/services/note_detail.js b/src/public/javascripts/services/note_detail.js index a3c246792..2963c99ed 100644 --- a/src/public/javascripts/services/note_detail.js +++ b/src/public/javascripts/services/note_detail.js @@ -182,6 +182,10 @@ async function loadNoteDetail(noteId) { // needs to happen after loading the note itself because it references current noteId attributeService.refreshAttributes(); } + else { + // mobile usually doesn't need attributes so we just invalidate + attributeService.invalidateAttributes(); + } if (isNewNoteCreated) { isNewNoteCreated = false;