handlerCreateElement.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. async function handleCreateElement(block, { refData }) {
  2. if (!this.activeTab.id) throw new Error('no-tab');
  3. const { data } = block;
  4. const preloadScriptsPromise = await Promise.allSettled(
  5. data.preloadScripts.map((item) => {
  6. if (!item.src.startsWith('http'))
  7. return Promise.reject(new Error('Invalid URL'));
  8. return fetch(item.src)
  9. .then((response) => response.text())
  10. .then((result) => ({ type: item.type, script: result }));
  11. })
  12. );
  13. const preloadScripts = preloadScriptsPromise.reduce((acc, item) => {
  14. if (item.status === 'rejected') return acc;
  15. acc.push(item.value);
  16. return acc;
  17. }, []);
  18. data.preloadScripts = preloadScripts;
  19. const payload = { ...block, data, refData: { variables: {} } };
  20. if (data.javascript.includes('automaRefData')) {
  21. payload.refData = { ...refData, secrets: {} };
  22. }
  23. await this._sendMessageToTab(payload, {}, data.runBeforeLoad ?? false);
  24. return {
  25. data: '',
  26. nextBlockId: this.getBlockConnections(block.id),
  27. };
  28. }
  29. export default handleCreateElement;