Merge pull request #4941 from GogoVega/fix-4599

Fix import of module list
This commit is contained in:
Nick O'Leary 2024-11-11 16:50:44 +00:00 committed by GitHub
commit a7d59a2b7f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 28 additions and 4 deletions

View File

@ -1564,6 +1564,7 @@ RED.nodes = (function() {
// Create the Flow JSON for the current configuration // Create the Flow JSON for the current configuration
// opts.credentials (whether to include (known) credentials) - default: true // opts.credentials (whether to include (known) credentials) - default: true
// opts.dimensions (whether to include node dimensions) - default: false // opts.dimensions (whether to include node dimensions) - default: false
// opts.includeModuleConfig (whether to include modules) - default: false
function createCompleteNodeSet(opts) { function createCompleteNodeSet(opts) {
var nns = []; var nns = [];
var i; var i;
@ -1595,7 +1596,9 @@ RED.nodes = (function() {
RED.nodes.eachNode(function(n) { RED.nodes.eachNode(function(n) {
nns.push(convertNode(n, opts)); nns.push(convertNode(n, opts));
}) })
updateGlobalConfigModuleList(nns) if (opts?.includeModuleConfig) {
updateGlobalConfigModuleList(nns);
}
return nns; return nns;
} }

View File

@ -747,7 +747,7 @@ RED.clipboard = (function() {
nodes.unshift(parentNode); nodes.unshift(parentNode);
nodes = RED.nodes.createExportableNodeSet(nodes, { includeModuleConfig: true }); nodes = RED.nodes.createExportableNodeSet(nodes, { includeModuleConfig: true });
} else if (type === 'full') { } else if (type === 'full') {
nodes = RED.nodes.createCompleteNodeSet({ credentials: false }); nodes = RED.nodes.createCompleteNodeSet({ credentials: false, includeModuleConfig: true });
} }
if (nodes !== null) { if (nodes !== null) {
if (format === "red-ui-clipboard-dialog-export-fmt-full") { if (format === "red-ui-clipboard-dialog-export-fmt-full") {

View File

@ -5676,17 +5676,38 @@ RED.view = (function() {
filteredNodesToImport = nodesToImport.filter(function (n) { filteredNodesToImport = nodesToImport.filter(function (n) {
if (n.type === "global-config") { if (n.type === "global-config") {
importedGlobalConfig = n importedGlobalConfig = n
// Do not import it if one exists
// The properties of this one will be merged after import
return false
}
return true
});
} else {
filteredNodesToImport = nodesToImport.filter(function (n) {
if (n.type === "global-config") {
importedGlobalConfig = n
if (n.env && n.env.length) {
// No existing global-config
// Contains env and maybe modules, so import it
return true
}
// Contains modules only - do not import it
return false return false
} }
return true return true
}); });
} }
const modules = importedGlobalConfig?.modules || {}
// Ensure do not import modules - since it can contain it
delete importedGlobalConfig?.modules
var result = RED.nodes.import(filteredNodesToImport,{ var result = RED.nodes.import(filteredNodesToImport,{
generateIds: options.generateIds, generateIds: options.generateIds,
addFlow: addNewFlow, addFlow: addNewFlow,
importMap: options.importMap, importMap: options.importMap,
markChanged: true, markChanged: true,
modules: importedGlobalConfig ? (importedGlobalConfig.modules || {}) : {} modules: modules
}); });
if (result) { if (result) {
var new_nodes = result.nodes; var new_nodes = result.nodes;
@ -5810,7 +5831,7 @@ RED.view = (function() {
} }
} }
if (importedGlobalConfig) { if (importedGlobalConfig && existingGlobalConfig) {
// merge global env to existing global-config // merge global env to existing global-config
var existingEnv = existingGlobalConfig.env || []; var existingEnv = existingGlobalConfig.env || [];
var importedEnv = importedGlobalConfig.env || [] var importedEnv = importedGlobalConfig.env || []