Browse Source

fix webhook issue in automations

pull/2984/head
Peter Clement 5 years ago
parent
commit
6f708ec86b
  1. 2
      packages/builder/src/builderStore/store/automation/Automation.js
  2. 17
      packages/builder/src/components/automation/AutomationBuilder/FlowChart/TestDataModal.svelte
  3. 9
      packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte
  4. 2
      packages/builder/src/components/automation/Shared/CreateWebhookModal.svelte
  5. 1
      packages/server/src/automations/triggers.js

2
packages/builder/src/builderStore/store/automation/Automation.js

@ -14,7 +14,7 @@ export default class Automation {
}
addTestData(data) {
this.automation.testData = data
this.automation.testData = { ...this.automation.testData, ...data }
}
addBlock(block, idx) {

17
packages/builder/src/components/automation/AutomationBuilder/FlowChart/TestDataModal.svelte

@ -5,20 +5,24 @@
import { cloneDeep } from "lodash/fp"
let failedParse = null
let trigger = {}
let schemaProperties = {}
// clone the trigger so we're not mutating the reference
let trigger = cloneDeep(
$: trigger = cloneDeep(
$automationStore.selectedAutomation.automation.definition.trigger
)
let schemaProperties = Object.entries(trigger.schema.outputs.properties || {})
// get the outputs so we can define the fields
$: schemaProperties = Object.entries(trigger?.schema?.outputs?.properties)
if (!$automationStore.selectedAutomation.automation.testData) {
$automationStore.selectedAutomation.automation.testData = {}
}
// get the outputs so we can define the fields
// check to see if there is existing test data in the store
$: testData = $automationStore.selectedAutomation.automation.testData
$: testData = $automationStore.selectedAutomation.automation.testData || {}
// Check the schema to see if required fields have been entered
$: isError = !trigger.schema.outputs.required.every(
required => testData[required]
@ -41,7 +45,6 @@
showConfirmButton={true}
disabled={isError}
onConfirm={() => {
automationStore.actions.addTestDataToAutomation(testData)
automationStore.actions.test(
$automationStore.selectedAutomation?.automation,
testData
@ -53,7 +56,7 @@
><Tab icon="Form" title="Form">
<div class="tab-content-padding">
<AutomationBlockSetup
bind:testData
{testData}
{schemaProperties}
isTestModal
block={trigger}

9
packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte

@ -55,6 +55,15 @@
const onChange = debounce(
async function (e, key) {
if (isTestModal) {
// Special case for webhook, as it requires a body, but the schema already brings back the body's contents
if (stepId === "WEBHOOK") {
automationStore.actions.addTestDataToAutomation({
body: { [key]: e.detail },
})
}
automationStore.actions.addTestDataToAutomation({
[key]: e.detail,
})
testData[key] = e.detail
} else {
block.inputs[key] = e.detail

2
packages/builder/src/components/automation/Shared/CreateWebhookModal.svelte

@ -1,7 +1,6 @@
<script>
import { Icon } from "@budibase/bbui"
import { automationStore } from "builderStore"
import { database } from "stores/backend"
import WebhookDisplay from "./WebhookDisplay.svelte"
import { ModalContent } from "@budibase/bbui"
import { onMount, onDestroy } from "svelte"
@ -12,7 +11,6 @@
let schemaURL
let propCount = 0
$: instanceId = $database._id
$: automation = $automationStore.selectedAutomation?.automation
onMount(async () => {

1
packages/server/src/automations/triggers.js

@ -85,6 +85,7 @@ exports.externalTrigger = async function (
automation.definition != null &&
automation.definition.trigger != null &&
automation.definition.trigger.stepId === definitions.APP.stepId &&
automation.definition.trigger.stepId === "APP" &&
!checkTestFlag(automation._id)
) {
// values are likely to be submitted as strings, so we shall convert to correct type

Loading…
Cancel
Save