88 lines
3.1 KiB
JavaScript
Executable File
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
|
|
};
|