From 7aeb13e43474f494a5449792c3e042349b91146b Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 29 Sep 2023 16:54:55 +0300 Subject: [PATCH] Fix plugins update from plugins manager --- apps/common/main/lib/controller/Plugins.js | 29 ++++++++++++------- .../forms/app/controller/Plugins.js | 28 ++++++++++++------ 2 files changed, 38 insertions(+), 19 deletions(-) diff --git a/apps/common/main/lib/controller/Plugins.js b/apps/common/main/lib/controller/Plugins.js index 450c7690d1..cebe8919c0 100644 --- a/apps/common/main/lib/controller/Plugins.js +++ b/apps/common/main/lib/controller/Plugins.js @@ -488,7 +488,7 @@ define([ onPluginsInit: function(pluginsdata) { !(pluginsdata instanceof Array) && (pluginsdata = pluginsdata["pluginsData"]); - this.parsePlugins(pluginsdata) + this.parsePlugins(pluginsdata, false, true) }, onPluginShowButton: function(id, toRight) { @@ -526,7 +526,7 @@ define([ }); }, - parsePlugins: function(pluginsdata, uiCustomize) { + parsePlugins: function(pluginsdata, uiCustomize, forceUpdate) { var me = this; var pluginStore = this.getApplication().getCollection('Common.Collections.Plugins'), isEdit = me.appOptions.isEdit && !me.isPDFEditor, @@ -536,12 +536,20 @@ define([ var arr = [], arrUI = [], lang = me.appOptions.lang.split(/[\-_]/)[0]; pluginsdata.forEach(function(item){ - if ( arr.some(function(i) { - return (i.get('baseUrl') == item.baseUrl || i.get('guid') == item.guid); - } - ) || pluginStore.findWhere({baseUrl: item.baseUrl}) || pluginStore.findWhere({guid: item.guid})) - { - return; + var updatedItem; + if (forceUpdate) { + updatedItem = arr.find(function (i){ + return i.get('baseUrl') == item.baseUrl || i.get('guid') == item.guid} + ); + !updatedItem && (updatedItem = pluginStore.findWhere({baseUrl: item.baseUrl})); + !updatedItem && (updatedItem = pluginStore.findWhere({guid: item.guid})); + } else { + if ( arr.some(function(i) { + return (i.get('baseUrl') == item.baseUrl || i.get('guid') == item.guid); + }) || pluginStore.findWhere({baseUrl: item.baseUrl}) || pluginStore.findWhere({guid: item.guid}) ) + { + return; + } } var variationsArr = [], @@ -592,7 +600,7 @@ define([ if (pluginVisible) pluginVisible = me.checkPluginVersion(apiVersion, item.minVersion); - arr.push(new Common.Models.Plugin({ + var props = { name : name, guid: item.guid, baseUrl : item.baseUrl, @@ -604,7 +612,8 @@ define([ minVersion: item.minVersion, original: item, isDisplayedInViewer: isDisplayedInViewer - })); + }; + updatedItem ? updatedItem.set(props) : arr.push(new Common.Models.Plugin(props)); } }); diff --git a/apps/documenteditor/forms/app/controller/Plugins.js b/apps/documenteditor/forms/app/controller/Plugins.js index 246ada1e0b..b0878c214a 100644 --- a/apps/documenteditor/forms/app/controller/Plugins.js +++ b/apps/documenteditor/forms/app/controller/Plugins.js @@ -238,7 +238,7 @@ define([ onPluginsInit: function(pluginsdata) { !(pluginsdata instanceof Array) && (pluginsdata = pluginsdata["pluginsData"]); - this.parsePlugins(pluginsdata) + this.parsePlugins(pluginsdata, true); }, runAutoStartPlugins: function() { @@ -251,7 +251,7 @@ define([ this.getApplication().getCollection('Common.Collections.Plugins').reset(); }, - parsePlugins: function(pluginsdata) { + parsePlugins: function(pluginsdata, forceUpdate) { var me = this; var pluginStore = this.getApplication().getCollection('Common.Collections.Plugins'), isEdit = false, @@ -261,12 +261,21 @@ define([ var arr = [], lang = me.appOptions.lang.split(/[\-_]/)[0]; pluginsdata.forEach(function(item){ - if ( arr.some(function(i) { - return (i.get('baseUrl') == item.baseUrl || i.get('guid') == item.guid); + var updatedItem; + if (forceUpdate) { + updatedItem = arr.find(function (i){ + return i.get('baseUrl') == item.baseUrl || i.get('guid') == item.guid} + ); + !updatedItem && (updatedItem = pluginStore.findWhere({baseUrl: item.baseUrl})); + !updatedItem && (updatedItem = pluginStore.findWhere({guid: item.guid})); + } else { + if ( arr.some(function(i) { + return (i.get('baseUrl') == item.baseUrl || i.get('guid') == item.guid); + } + ) || pluginStore.findWhere({baseUrl: item.baseUrl}) || pluginStore.findWhere({guid: item.guid})) + { + return; } - ) || pluginStore.findWhere({baseUrl: item.baseUrl}) || pluginStore.findWhere({guid: item.guid})) - { - return; } var variationsArr = [], @@ -310,7 +319,7 @@ define([ if (pluginVisible) pluginVisible = me.checkPluginVersion(apiVersion, item.minVersion); - arr.push(new Common.Models.Plugin({ + var props = { name : name, guid: item.guid, baseUrl : item.baseUrl, @@ -321,7 +330,8 @@ define([ groupRank: (item.group) ? item.group.rank : 0, minVersion: item.minVersion, original: item - })); + }; + updatedItem ? updatedItem.set(props) : arr.push(new Common.Models.Plugin(props)); } });