mirror of
https://github.com/n8n-io/n8n.git
synced 2024-11-13 16:14:07 -08:00
fix(n8n Form Node): Form Trigger does not wait in multi-form mode (#11404)
This commit is contained in:
parent
d024aee9b7
commit
d57da557a0
|
@ -38,6 +38,25 @@ export class WaitingForms extends WaitingWebhooks {
|
|||
});
|
||||
}
|
||||
|
||||
private async reloadForm(req: WaitingWebhookRequest, res: express.Response) {
|
||||
try {
|
||||
await sleep(1000);
|
||||
|
||||
const url = `${req.protocol}://${req.get('host')}${req.originalUrl}`;
|
||||
const page = await axios({ url });
|
||||
|
||||
if (page) {
|
||||
res.send(`
|
||||
<script>
|
||||
setTimeout(function() {
|
||||
window.location.reload();
|
||||
}, 1);
|
||||
</script>
|
||||
`);
|
||||
}
|
||||
} catch (error) {}
|
||||
}
|
||||
|
||||
async executeWebhook(
|
||||
req: WaitingWebhookRequest,
|
||||
res: express.Response,
|
||||
|
@ -56,30 +75,17 @@ export class WaitingForms extends WaitingWebhooks {
|
|||
}
|
||||
|
||||
if (execution.data.resultData.error) {
|
||||
throw new ConflictError(`The execution "${executionId}" has finished with error.`);
|
||||
const message = `The execution "${executionId}" has finished with error.`;
|
||||
this.logger.debug(message, { error: execution.data.resultData.error });
|
||||
throw new ConflictError(message);
|
||||
}
|
||||
|
||||
if (execution.status === 'running') {
|
||||
if (this.includeForms && req.method === 'GET') {
|
||||
await sleep(1000);
|
||||
|
||||
const url = `${req.protocol}://${req.get('host')}${req.originalUrl}`;
|
||||
const page = await axios({ url });
|
||||
|
||||
if (page) {
|
||||
res.send(`
|
||||
<script>
|
||||
setTimeout(function() {
|
||||
window.location.reload();
|
||||
}, 1);
|
||||
</script>
|
||||
`);
|
||||
}
|
||||
|
||||
return {
|
||||
noWebhookResponse: true,
|
||||
};
|
||||
await this.reloadForm(req, res);
|
||||
return { noWebhookResponse: true };
|
||||
}
|
||||
|
||||
throw new ConflictError(`The execution "${executionId}" is running already.`);
|
||||
}
|
||||
|
||||
|
|
|
@ -102,7 +102,9 @@ export class WaitingWebhooks implements IWebhookManager {
|
|||
}
|
||||
|
||||
if (execution.data?.resultData?.error) {
|
||||
throw new ConflictError(`The execution "${executionId} has finished already.`);
|
||||
const message = `The execution "${executionId}" has finished with error.`;
|
||||
this.logger.debug(message, { error: execution.data.resultData.error });
|
||||
throw new ConflictError(message);
|
||||
}
|
||||
|
||||
if (execution.finished) {
|
||||
|
@ -182,23 +184,25 @@ export class WaitingWebhooks implements IWebhookManager {
|
|||
if (this.isSendAndWaitRequest(workflow.nodes, suffix)) {
|
||||
res.render('send-and-wait-no-action-required', { isTestWebhook: false });
|
||||
return { noWebhookResponse: true };
|
||||
} else if (!execution.data.resultData.error && execution.status === 'waiting') {
|
||||
}
|
||||
|
||||
if (!execution.data.resultData.error && execution.status === 'waiting') {
|
||||
const childNodes = workflow.getChildNodes(
|
||||
execution.data.resultData.lastNodeExecuted as string,
|
||||
);
|
||||
|
||||
const hasChildForms = childNodes.some(
|
||||
(node) =>
|
||||
workflow.nodes[node].type === FORM_NODE_TYPE ||
|
||||
workflow.nodes[node].type === WAIT_NODE_TYPE,
|
||||
);
|
||||
|
||||
if (hasChildForms) {
|
||||
return { noWebhookResponse: true };
|
||||
} else {
|
||||
throw new NotFoundError(errorMessage);
|
||||
}
|
||||
} else {
|
||||
throw new NotFoundError(errorMessage);
|
||||
}
|
||||
|
||||
throw new NotFoundError(errorMessage);
|
||||
}
|
||||
|
||||
const runExecutionData = execution.data;
|
||||
|
|
|
@ -752,6 +752,8 @@
|
|||
console.error('Error:', error);
|
||||
});
|
||||
|
||||
const isWaitingForm = window.location.href.includes('form-waiting');
|
||||
if(isWaitingForm) {
|
||||
const interval = setInterval(function() {
|
||||
const isSubmited = document.querySelector('#submitted-form').style.display;
|
||||
if(isSubmited === 'block') {
|
||||
|
@ -760,6 +762,7 @@
|
|||
}
|
||||
window.location.reload();
|
||||
}, 2000);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
|
Loading…
Reference in a new issue