From 8a8d37dd43199008e1e5eb07a91f477b932f9b53 Mon Sep 17 00:00:00 2001 From: Mo Bitar Date: Fri, 20 Jul 2018 19:12:14 -0500 Subject: [PATCH] Component save-item make sure it exists --- app/assets/javascripts/app/controllers/editor.js | 2 +- app/assets/javascripts/app/services/componentManager.js | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/app/controllers/editor.js b/app/assets/javascripts/app/controllers/editor.js index 8ebfb10f1..bbf5c2354 100644 --- a/app/assets/javascripts/app/controllers/editor.js +++ b/app/assets/javascripts/app/controllers/editor.js @@ -23,7 +23,7 @@ angular.module('app') } }) .controller('EditorCtrl', function ($sce, $timeout, authManager, $rootScope, actionsManager, syncManager, modelManager, themeManager, componentManager, storageManager, sessionHistory) { - + this.spellcheck = true; this.componentManager = componentManager; diff --git a/app/assets/javascripts/app/services/componentManager.js b/app/assets/javascripts/app/services/componentManager.js index 4abcbc739..5de8eadaf 100644 --- a/app/assets/javascripts/app/services/componentManager.js +++ b/app/assets/javascripts/app/services/componentManager.js @@ -481,8 +481,13 @@ class ComponentManager { */ var localItems = this.modelManager.mapResponseItemsToLocalModels(responseItems, SFModelManager.MappingSourceComponentRetrieved, component.uuid); - for(var item of localItems) { - var responseItem = _.find(responseItems, {uuid: item.uuid}); + for(var responseItem of responseItems) { + var item = _.find(localItems, {uuid: responseItem.uuid}); + if(!item) { + // An item this extension is trying to save was possibly removed locally, notify user + alert(`The extension ${component.name} is trying to save an item with type ${responseItem.content_type}, but that item does not exist. Please restart this extension and try again.`); + continue; + } _.merge(item.content, responseItem.content); if(responseItem.clientData) { item.setDomainDataItem(component.getClientDataKey(), responseItem.clientData, ComponentManager.ClientDataDomain);