diff --git a/app/assets/javascripts/app/controllers/editor.js b/app/assets/javascripts/app/controllers/editor.js index 488d4f3d8..a73bcbe9f 100644 --- a/app/assets/javascripts/app/controllers/editor.js +++ b/app/assets/javascripts/app/controllers/editor.js @@ -89,6 +89,25 @@ angular.module('app') } } + // Observe editor changes to see if the current note should update its editor + + modelManager.addItemSyncObserver("component-manager", "SN|Component", (allItems, validItems, deletedItems, source) => { + if(!this.note) { return; } + + var editors = allItems.filter(function(item) { + return item.isEditor(); + }); + + // If no editors have changed + if(editors.length == 0) { + return; + } + + // Look through editors again and find the most proper one + var editor = this.editorForNote(this.note); + this.selectedEditor = editor; + }); + this.editorForNote = function(note) { let editors = componentManager.componentsForArea("editor-editor"); for(var editor of editors) { diff --git a/app/assets/javascripts/app/services/modelManager.js b/app/assets/javascripts/app/services/modelManager.js index d3b3b9a3b..a4cd9b84c 100644 --- a/app/assets/javascripts/app/services/modelManager.js +++ b/app/assets/javascripts/app/services/modelManager.js @@ -134,7 +134,7 @@ class ModelManager { delete json_obj[key]; } } - + var item = this.findItem(json_obj.uuid); if(item) { @@ -193,7 +193,7 @@ class ModelManager { /* Note that this function is public, and can also be called manually (desktopManager uses it) */ notifySyncObserversOfModels(models, source) { for(var observer of this.itemSyncObservers) { - var allRelevantItems = models.filter(function(item){return item.content_type == observer.type || observer.type == "*"}); + var allRelevantItems = observer.type == "*" ? models : models.filter(function(item){return item.content_type == observer.type}); var validItems = [], deletedItems = []; for(var item of allRelevantItems) { if(item.deleted) {