diff --git a/frontend/scripts/untar_ui_builder.js b/frontend/scripts/untar_ui_builder.js index bb3a6ada33..0991589025 100644 --- a/frontend/scripts/untar_ui_builder.js +++ b/frontend/scripts/untar_ui_builder.js @@ -20,7 +20,7 @@ console.log('Running postinstall for root project'); import { x } from 'tar' -const tarUrl = 'https://pub-06154ed168a24e73a86ab84db6bf15d8.r2.dev/ui_builder-1fcd9b7.tar.gz' +const tarUrl = 'https://pub-06154ed168a24e73a86ab84db6bf15d8.r2.dev/ui_builder-0e5c66f.tar.gz' const outputTarPath = path.join(process.cwd(), 'ui_builder.tar.gz') const extractTo = path.join(process.cwd(), 'static/ui_builder/') diff --git a/frontend/src/lib/components/raw_apps/RawAppBackgroundRunner.svelte b/frontend/src/lib/components/raw_apps/RawAppBackgroundRunner.svelte index 7ca4b15ffd..389697707e 100644 --- a/frontend/src/lib/components/raw_apps/RawAppBackgroundRunner.svelte +++ b/frontend/src/lib/components/raw_apps/RawAppBackgroundRunner.svelte @@ -44,7 +44,7 @@ result = e } - if (event.data.type == 'backend') { + if (event.data.type == 'backend' || event.data.type == 'waitJob') { respond({ result, error }) } if (editor) { @@ -134,6 +134,7 @@ const reqId = data.reqId const params = new URLSearchParams() params.set('fast', 'true') + params.set('only_result', 'true') const sseUrl = `/api/w/${workspace}/jobs_u/getupdate_sse/${jobId}?${params.toString()}` const eventSource = new EventSource(sseUrl) diff --git a/frontend/src/lib/rawAppWmillTs.ts b/frontend/src/lib/rawAppWmillTs.ts index 3cf719a0a0..64c23672c4 100644 --- a/frontend/src/lib/rawAppWmillTs.ts +++ b/frontend/src/lib/rawAppWmillTs.ts @@ -1,10 +1,11 @@ let reqs: Record = {} -function doRequest(type: string, o: object) { +function doRequest(type: string, o: object, extra?: object) { return new Promise((resolve, reject) => { const reqId = Math.random().toString(36) - reqs[reqId] = { resolve, reject } - parent.postMessage({ ...o, type, reqId }, '*') + reqs[reqId] = { resolve, reject, ...extra } + const req = { ...o, type, reqId } + parent.postMessage(req, '*') }) } @@ -49,15 +50,11 @@ export function streamJob( jobId: string, onUpdate?: (data: { new_result_stream?: string; stream_offset?: number }) => void ): Promise { - return new Promise((resolve, reject) => { - const reqId = Math.random().toString(36) - reqs[reqId] = { resolve, reject, onUpdate } - parent.postMessage({ jobId, type: 'streamJob', reqId }, '*') - }) + return doRequest('streamJob', { jobId }, { onUpdate }) } window.addEventListener('message', (e) => { - if (e.data.type == 'streamJobUpdate') { + if (e.data.type === 'streamJobUpdate') { // Handle streaming update let job = reqs[e.data.reqId] if (job && job.onUpdate) { @@ -66,7 +63,7 @@ window.addEventListener('message', (e) => { stream_offset: e.data.stream_offset }) } - } else if (e.data.type == 'streamJobRes') { + } else if (e.data.type === 'streamJobRes') { // Handle stream completion let job = reqs[e.data.reqId] if (job) { @@ -77,7 +74,12 @@ window.addEventListener('message', (e) => { } delete reqs[e.data.reqId] } - } else if (e.data.type == 'backendRes' || e.data.type == 'backendAsyncRes') { + } else if ( + e.data.type === 'backendRes' || + e.data.type === 'backendAsyncRes' || + e.data.type === 'waitJobRes' || + e.data.type === 'getJobRes' + ) { console.log('Message from parent backend', e.data) let job = reqs[e.data.reqId] if (job) { @@ -87,9 +89,9 @@ window.addEventListener('message', (e) => { } else { job.resolve(result) } + delete reqs[e.data.reqId] } else { console.error('No job found for', e.data.reqId) } - delete reqs[e.data.reqId] } })