diff --git a/frontend/src/lib/components/DisplayResult.svelte b/frontend/src/lib/components/DisplayResult.svelte
index 59408034d9..9edbb7fabc 100644
--- a/frontend/src/lib/components/DisplayResult.svelte
+++ b/frontend/src/lib/components/DisplayResult.svelte
@@ -3,6 +3,8 @@
import { json } from 'svelte-highlight/languages'
import TableCustom from './TableCustom.svelte'
import { truncate } from '$lib/utils'
+ import { Button } from './common'
+ import autosize from 'svelte-autosize'
export let result: any
@@ -15,6 +17,7 @@
| 'jpeg'
| 'gif'
| 'error'
+ | 'approval'
| undefined = inferResultKind(result)
let forceJson = false
@@ -57,11 +60,19 @@
return 'file'
} else if (keys.length == 1 && keys[0] == 'error' && typeof result['error'] == 'string') {
return 'error'
+ } else if (
+ keys.length == 3 &&
+ keys.includes('resume') &&
+ keys.includes('cancel') &&
+ keys.includes('approvalPage')
+ ) {
+ return 'approval'
}
} catch (err) {}
}
return 'json'
}
+ let payload = ''
@@ -132,6 +143,31 @@
{:else if !forceJson && resultKind == 'error'}
+ {:else if !forceJson && resultKind == 'approval'}
+
+
+
+
+
{:else}
- previousId: string | undefined
+ previousId: string | undefined,
+ hasResume: boolean
}
type StepPropPicker = {
@@ -118,9 +119,12 @@ export function getStepPropPicker(
const pickableProperties = {
flow_input: flowInput,
priorIds: priorIds,
- previousId: previousIds[0]
+ previousId: previousIds[0],
+ hasResume: previousModule?.suspend != undefined,
}
+
+
if (approvers && ((previousModule?.suspend?.required_events ?? 0) > 0)) {
pickableProperties["approvers"] = "The list of approvers"
}
diff --git a/frontend/src/lib/components/propertyPicker/PropPicker.svelte b/frontend/src/lib/components/propertyPicker/PropPicker.svelte
index c42e65744b..b3291d39b1 100644
--- a/frontend/src/lib/components/propertyPicker/PropPicker.svelte
+++ b/frontend/src/lib/components/propertyPicker/PropPicker.svelte
@@ -121,6 +121,22 @@
/>
{/if}
+ {#if pickableProperties.hasResume}
+ Resume payloads
+
+ {
+ dispatch('select', `${e.detail}`)
+ }}
+ />
+
+ {/if}
{#if Object.keys(pickableProperties.priorIds).length > 0}
All Results
diff --git a/frontend/src/routes/approve/[workspace]/[job]/[resume]/[hmac]@none.svelte b/frontend/src/routes/approve/[workspace]/[job]/[resume]/[hmac]@none.svelte
index a4c5969d3b..bd039af09c 100644
--- a/frontend/src/routes/approve/[workspace]/[job]/[resume]/[hmac]@none.svelte
+++ b/frontend/src/routes/approve/[workspace]/[job]/[resume]/[hmac]@none.svelte
@@ -9,6 +9,7 @@
import { onDestroy, onMount } from 'svelte'
import Tooltip from '$lib/components/Tooltip.svelte'
import FlowGraph from '$lib/components/graph/FlowGraph.svelte'
+ import autosize from 'svelte-autosize'
let job: Job | undefined = undefined
let currentApprovers: { resume_id: number; approver: string }[] = []
@@ -22,6 +23,7 @@
let timeout: NodeJS.Timer | undefined = undefined
let error: string | undefined = undefined
+ let payload = ''
getJob()
@@ -69,7 +71,7 @@
resumeId: new Number($page.params.resume).valueOf(),
signature: $page.params.hmac,
approver,
- requestBody: {}
+ requestBody: payload
})
sendUserToast('Flow approved')
getJob()
@@ -160,6 +162,10 @@
disabled={completed || alreadyResumed}>Approve/Resume
+
+
Payload (optional)
+
+