diff --git a/packages/backend/src/apps/typeform/dynamic-data/index.ts b/packages/backend/src/apps/typeform/dynamic-data/index.ts new file mode 100644 index 00000000..cb6cd053 --- /dev/null +++ b/packages/backend/src/apps/typeform/dynamic-data/index.ts @@ -0,0 +1,3 @@ +import listForms from './list-forms'; + +export default [listForms]; diff --git a/packages/backend/src/apps/typeform/dynamic-data/list-forms/index.ts b/packages/backend/src/apps/typeform/dynamic-data/list-forms/index.ts new file mode 100644 index 00000000..409ec1a3 --- /dev/null +++ b/packages/backend/src/apps/typeform/dynamic-data/list-forms/index.ts @@ -0,0 +1,25 @@ +import { IGlobalVariable, IJSONObject } from '@automatisch/types'; + +export default { + name: 'List forms', + key: 'listForms', + + async run($: IGlobalVariable) { + const forms: { + data: IJSONObject[]; + } = { + data: [], + }; + + const response = await $.http.get('/forms'); + + forms.data = response.data.items.map((form: IJSONObject) => { + return { + value: form.id, + name: form.title, + }; + }); + + return forms; + }, +}; diff --git a/packages/backend/src/apps/typeform/index.ts b/packages/backend/src/apps/typeform/index.ts index 34e5bac7..060589c8 100644 --- a/packages/backend/src/apps/typeform/index.ts +++ b/packages/backend/src/apps/typeform/index.ts @@ -1,6 +1,8 @@ import defineApp from '../../helpers/define-app'; import addAuthHeader from './common/add-auth-header'; import auth from './auth'; +import triggers from './triggers'; +import dynamicData from './dynamic-data'; export default defineApp({ name: 'Typeform', @@ -13,4 +15,6 @@ export default defineApp({ primaryColor: '000000', beforeRequest: [addAuthHeader], auth, + triggers, + dynamicData, }); diff --git a/packages/backend/src/apps/typeform/triggers/index.ts b/packages/backend/src/apps/typeform/triggers/index.ts new file mode 100644 index 00000000..c49828b1 --- /dev/null +++ b/packages/backend/src/apps/typeform/triggers/index.ts @@ -0,0 +1,3 @@ +import newEntry from './new-entry'; + +export default [newEntry]; diff --git a/packages/backend/src/apps/typeform/triggers/new-entry/index.ts b/packages/backend/src/apps/typeform/triggers/new-entry/index.ts new file mode 100644 index 00000000..1d4f167f --- /dev/null +++ b/packages/backend/src/apps/typeform/triggers/new-entry/index.ts @@ -0,0 +1,32 @@ +import defineTrigger from '../../../../helpers/define-trigger'; + +export default defineTrigger({ + name: 'New entry', + key: 'newEntry', + pollInterval: 15, + description: 'Triggers when a new form submitted.', + arguments: [ + { + label: 'Form', + key: 'form', + type: 'dropdown' as const, + required: true, + description: 'Pick a form to receive submissions.', + variables: false, + source: { + type: 'query', + name: 'getDynamicData', + arguments: [ + { + name: 'key', + value: 'listForms', + }, + ], + }, + }, + ], + + async run($) { + // await getUserTweets($, { currentUser: true }); + }, +});