-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathplugin-app.js
More file actions
71 lines (58 loc) · 2.21 KB
/
plugin-app.js
File metadata and controls
71 lines (58 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import React, { useState } from 'react';
import merge from 'lodash.merge';
import { ConfigurationForm } from './configuration-form';
import { getDefaultTaskDefinition, formatConnection, formatFormData } from './outbound-http-request-task-definition';
import { addCustomPipedTextOptions } from './custom-piped-text-options';
import './plugin-app.scss';
export function PluginApp(props) {
const client = props.client;
const [ taskDefinition, setTaskDefinition ] = useState(_loadTaskDefinition);
// Main Event Handler
client.onSave(saveTaskDefinition);
// Custom Piped Text
addCustomPipedTextOptions(client.context.pipedText);
// React Component
return (
<div className='plugin-app'>
<ConfigurationForm
client={client}
toggleSaveButtonState={toggleSaveButtonState}
savedFormFields={taskDefinition.formFields}
prepareFormFieldsForSaving={prepareFormFieldsForSaving}
>
</ConfigurationForm>
</div>
);
function saveTaskDefinition() {
const newTaskDefinition = { ...taskDefinition };
// Step 1 - Conditionally attach a connection - see 'Setting Up Authentication' guide in docs for more details
const credentialId = client.getAvailableConnections().credentialId;
if(credentialId) {
newTaskDefinition.connection = formatConnection(credentialId);
}
// Step 2 - Merge dynamic form key-value pairs with static request body parameters
merge(newTaskDefinition.body, formatFormData(taskDefinition.formFields));
// This may be unnecessary, but it feels like the right thing to do :)
setTaskDefinition(newTaskDefinition);
// Step 3 - Return the task definition object for persistance into backend
return newTaskDefinition;
}
function prepareFormFieldsForSaving(formFields) {
const newTaskDefinition = { ...taskDefinition };
newTaskDefinition.formFields = formFields;
setTaskDefinition(newTaskDefinition);
}
function toggleSaveButtonState(isFormValid) {
if(isFormValid) {
client.enableSaveButton();
} else {
client.disableSaveButton();
}
}
function _loadTaskDefinition() {
if(client.isSavedTask()) {
return client.getConfig();
}
return getDefaultTaskDefinition();
}
}