Files
lcbp3.np-dms.work/n8n-cache/n8n/public/assets/templateActions-B4GEcBXU.js
2025-09-21 20:29:15 +07:00

88 lines
3.1 KiB
JavaScript
Executable File

import { ey as assert, eP as doesNodeHaveCredentialsToFill, V as VIEWS, dw as tryToParseNumber, eQ as getNewWorkflow, eR as replaceAllTemplateNodeCredentials, dB as getNodesWithNormalizedPosition } from "./index--OJ5nhDf.js";
async function createWorkflowFromTemplate(opts) {
const { credentialOverrides, nodeTypeProvider, rootStore, template, workflowsStore } = opts;
const workflowData = await getNewWorkflow(rootStore.restApiContext, { name: template.name });
const nodesWithCreds = replaceAllTemplateNodeCredentials(
nodeTypeProvider,
template.workflow.nodes,
credentialOverrides
);
const nodes = getNodesWithNormalizedPosition(nodesWithCreds);
const connections = template.workflow.connections;
const workflowToCreate = {
name: workflowData.name,
nodes,
connections,
active: false,
meta: {
templateId: template.id.toString()
}
// Ignored: pinData, settings, tags, versionId
};
const createdWorkflow = await workflowsStore.createNewWorkflow(workflowToCreate);
return createdWorkflow;
}
async function openTemplateCredentialSetup(opts) {
const { router, templateId, inNewBrowserTab = false, telemetry, source } = opts;
telemetry.track("User opened cred setup", { source });
const routeLocation = {
name: VIEWS.TEMPLATE_SETUP,
params: { id: templateId }
};
if (inNewBrowserTab) {
const route = router.resolve(routeLocation);
window.open(route.href, "_blank");
} else {
await router.push(routeLocation);
}
}
async function openTemplateWorkflowOnNodeView(opts) {
const { externalHooks, templateId, templatesStore, inNewBrowserTab, router } = opts;
const routeLocation = {
name: VIEWS.TEMPLATE_IMPORT,
params: { id: templateId }
};
const telemetryPayload = {
source: "workflow",
template_id: tryToParseNumber(templateId),
wf_template_repo_session_id: templatesStore.currentSessionId
};
await externalHooks.run("templatesWorkflowView.openWorkflow", telemetryPayload);
if (inNewBrowserTab) {
const route = router.resolve(routeLocation);
window.open(route.href, "_blank");
} else {
await router.push(routeLocation);
}
}
function hasTemplateCredentials(nodeTypeProvider, template) {
return template.workflow.nodes.some(
(node) => doesNodeHaveCredentialsToFill(nodeTypeProvider, node)
);
}
async function getFullTemplate(templatesStore, templateId) {
const template = templatesStore.getFullTemplateById(templateId);
if (template) {
return template;
}
await templatesStore.fetchTemplateById(templateId);
return templatesStore.getFullTemplateById(templateId);
}
async function useTemplateWorkflow(opts) {
const { nodeTypesStore, templateId, templatesStore } = opts;
const [template] = await Promise.all([
getFullTemplate(templatesStore, templateId),
nodeTypesStore.loadNodeTypesIfNotLoaded()
]);
assert(template);
if (hasTemplateCredentials(nodeTypesStore, template)) {
await openTemplateCredentialSetup(opts);
} else {
await openTemplateWorkflowOnNodeView(opts);
}
}
export {
createWorkflowFromTemplate as c,
useTemplateWorkflow as u
};