diff --git a/src/public/javascripts/services/note_detail.js b/src/public/javascripts/services/note_detail.js index 5a119d799..6fc197ba3 100644 --- a/src/public/javascripts/services/note_detail.js +++ b/src/public/javascripts/services/note_detail.js @@ -41,14 +41,20 @@ async function reload() { await loadNoteDetail(getActiveTabContext().notePath); } -async function reloadAllTabs() { - for (const tabContext of tabContexts) { +async function reloadTab(tabContext) { + if (tabContext.note) { const note = await loadNote(tabContext.note.noteId); await loadNoteDetailToContext(tabContext, note, tabContext.notePath); } } +async function reloadAllTabs() { + for (const tabContext of tabContexts) { + await reloadTab(tabContext); + } +} + async function openInTab(notePath) { await loadNoteDetail(notePath, { newTab: true }); } @@ -289,6 +295,14 @@ async function noteDeleted(noteId) { } } +async function refreshTabs(sourceTabId, noteId) { + for (const tc of tabContexts) { + if (tc.noteId === noteId && tc.tabId !== sourceTabId) { + await reloadTab(tc); + } + } +} + function focusOnTitle() { getActiveTabContext().$noteTitle.focus(); } @@ -322,10 +336,10 @@ function fireDetailLoaded() { } messagingService.subscribeToSyncMessages(syncData => { - if (syncData.some(sync => sync.entityName === 'notes' && sync.entityId === getActiveNoteId())) { + if (syncData.some(sync => sync.entityName === 'notes')) { infoService.showMessage('Reloading note because of background changes'); - reload(); + refreshTabs(null, sync.entityId); } }); @@ -505,5 +519,6 @@ export default { clearOpenTabsTask, filterTabs, openEmptyTab, - noteDeleted + noteDeleted, + refreshTabs }; \ No newline at end of file diff --git a/src/public/javascripts/services/tab_context.js b/src/public/javascripts/services/tab_context.js index 27a259dbe..f8bccee5e 100644 --- a/src/public/javascripts/services/tab_context.js +++ b/src/public/javascripts/services/tab_context.js @@ -221,6 +221,8 @@ class TabContext { async saveNoteIfChanged() { if (this.isNoteChanged) { await this.saveNote(); + + noteDetailService.refreshTabs(this.tabId, this.noteId); } }