diff --git a/packages/backend/src/apps/flickr/triggers/new-albums/index.ts b/packages/backend/src/apps/flickr/triggers/new-albums/index.ts index fd92a9c5..e7da8f43 100644 --- a/packages/backend/src/apps/flickr/triggers/new-albums/index.ts +++ b/packages/backend/src/apps/flickr/triggers/new-albums/index.ts @@ -6,16 +6,6 @@ export default defineTrigger({ pollInterval: 15, key: 'new-albums', description: 'Triggers when you create a new album.', - substeps: [ - { - key: 'chooseConnection', - name: 'Choose connection', - }, - { - key: 'testStep', - name: 'Test trigger', - }, - ], async run($) { await newAlbums($); diff --git a/packages/backend/src/apps/flickr/triggers/new-favorite-photos/index.ts b/packages/backend/src/apps/flickr/triggers/new-favorite-photos/index.ts index 3ae20938..70babf6d 100644 --- a/packages/backend/src/apps/flickr/triggers/new-favorite-photos/index.ts +++ b/packages/backend/src/apps/flickr/triggers/new-favorite-photos/index.ts @@ -6,16 +6,6 @@ export default defineTrigger({ pollInterval: 15, key: 'newFavoritePhotos', description: 'Triggers when you favorite a photo.', - substeps: [ - { - key: 'chooseConnection', - name: 'Choose connection', - }, - { - key: 'testStep', - name: 'Test trigger', - }, - ], async run($) { await newFavoritePhotos($); diff --git a/packages/backend/src/apps/flickr/triggers/new-photos-in-album/index.ts b/packages/backend/src/apps/flickr/triggers/new-photos-in-album/index.ts index 37395b68..e5e3cd77 100644 --- a/packages/backend/src/apps/flickr/triggers/new-photos-in-album/index.ts +++ b/packages/backend/src/apps/flickr/triggers/new-photos-in-album/index.ts @@ -6,37 +6,23 @@ export default defineTrigger({ pollInterval: 15, key: 'newPhotosInAlbum', description: 'Triggers when you add a new photo in an album.', - substeps: [ + arguments: [ { - key: 'chooseConnection', - name: 'Choose connection', - }, - { - key: 'chooseTrigger', - name: 'Set up a trigger', - arguments: [ - { - label: 'Album', - key: 'album', - type: 'dropdown' as const, - required: true, - variables: false, - source: { - type: 'query', - name: 'getData', - arguments: [ - { - name: 'key', - value: 'listAlbums', - }, - ], + label: 'Album', + key: 'album', + type: 'dropdown' as const, + required: true, + variables: false, + source: { + type: 'query', + name: 'getData', + arguments: [ + { + name: 'key', + value: 'listAlbums', }, - }, - ], - }, - { - key: 'testStep', - name: 'Test trigger', + ], + }, }, ], diff --git a/packages/backend/src/apps/flickr/triggers/new-photos/index.ts b/packages/backend/src/apps/flickr/triggers/new-photos/index.ts index 663bf8a2..66e95ede 100644 --- a/packages/backend/src/apps/flickr/triggers/new-photos/index.ts +++ b/packages/backend/src/apps/flickr/triggers/new-photos/index.ts @@ -6,16 +6,6 @@ export default defineTrigger({ pollInterval: 15, key: 'newPhotos', description: 'Triggers when you add a new photo.', - substeps: [ - { - key: 'chooseConnection', - name: 'Choose connection', - }, - { - key: 'testStep', - name: 'Test trigger', - }, - ], async run($) { await newPhotos($); diff --git a/packages/backend/src/apps/github/triggers/new-issues/index.ts b/packages/backend/src/apps/github/triggers/new-issues/index.ts index 52ef224b..4bc46068 100644 --- a/packages/backend/src/apps/github/triggers/new-issues/index.ts +++ b/packages/backend/src/apps/github/triggers/new-issues/index.ts @@ -6,91 +6,77 @@ export default defineTrigger({ key: 'newIssues', pollInterval: 15, description: 'Triggers when a new issue is created', - substeps: [ + arguments: [ { - key: 'chooseConnection', - name: 'Choose connection', + label: 'Repo', + key: 'repo', + type: 'dropdown' as const, + required: false, + variables: false, + source: { + type: 'query', + name: 'getData', + arguments: [ + { + name: 'key', + value: 'listRepos', + }, + ], + }, }, { - key: 'chooseTrigger', - name: 'Set up a trigger', - arguments: [ + label: 'Which types of issues should this trigger on?', + key: 'issueType', + type: 'dropdown' as const, + description: 'Defaults to any issue you can see.', + required: true, + variables: false, + value: 'all', + options: [ { - label: 'Repo', - key: 'repo', - type: 'dropdown' as const, - required: false, - variables: false, - source: { - type: 'query', - name: 'getData', - arguments: [ - { - name: 'key', - value: 'listRepos', - }, - ], - }, - }, - { - label: 'Which types of issues should this trigger on?', - key: 'issueType', - type: 'dropdown' as const, - description: 'Defaults to any issue you can see.', - required: true, - variables: false, + label: 'Any issue you can see', value: 'all', - options: [ - { - label: 'Any issue you can see', - value: 'all', - }, - { - label: 'Only issues assigned to you', - value: 'assigned', - }, - { - label: 'Only issues created by you', - value: 'created', - }, - { - label: `Only issues you're mentioned in`, - value: 'mentioned', - }, - { - label: `Only issues you're subscribed to`, - value: 'subscribed', - }, - ], }, { - label: 'Label', - key: 'label', - type: 'dropdown' as const, - description: 'Only trigger on issues when this label is added.', - required: false, - variables: false, - dependsOn: ['parameters.repo'], - source: { - type: 'query', - name: 'getData', - arguments: [ - { - name: 'key', - value: 'listLabels', - }, - { - name: 'parameters.repo', - value: '{parameters.repo}', - }, - ], - }, + label: 'Only issues assigned to you', + value: 'assigned', + }, + { + label: 'Only issues created by you', + value: 'created', + }, + { + label: `Only issues you're mentioned in`, + value: 'mentioned', + }, + { + label: `Only issues you're subscribed to`, + value: 'subscribed', }, ], }, { - key: 'testStep', - name: 'Test trigger', + label: 'Label', + key: 'label', + type: 'dropdown' as const, + description: 'Only trigger on issues when this label is added.', + required: false, + variables: false, + dependsOn: ['parameters.repo'], + source: { + type: 'query', + name: 'getData', + arguments: [ + { + name: 'key', + value: 'listLabels', + }, + { + name: 'parameters.repo', + value: '{parameters.repo}', + }, + ], + }, }, ], diff --git a/packages/backend/src/apps/github/triggers/new-pull-requests/index.ts b/packages/backend/src/apps/github/triggers/new-pull-requests/index.ts index c3053e4a..57236c87 100644 --- a/packages/backend/src/apps/github/triggers/new-pull-requests/index.ts +++ b/packages/backend/src/apps/github/triggers/new-pull-requests/index.ts @@ -6,37 +6,23 @@ export default defineTrigger({ key: 'newPullRequests', pollInterval: 15, description: 'Triggers when a new pull request is created', - substeps: [ + arguments: [ { - key: 'chooseConnection', - name: 'Choose connection', - }, - { - key: 'chooseTrigger', - name: 'Set up a trigger', - arguments: [ - { - label: 'Repo', - key: 'repo', - type: 'dropdown' as const, - required: true, - variables: false, - source: { - type: 'query', - name: 'getData', - arguments: [ - { - name: 'key', - value: 'listRepos', - }, - ], + label: 'Repo', + key: 'repo', + type: 'dropdown' as const, + required: true, + variables: false, + source: { + type: 'query', + name: 'getData', + arguments: [ + { + name: 'key', + value: 'listRepos', }, - }, - ], - }, - { - key: 'testStep', - name: 'Test trigger', + ], + }, }, ], diff --git a/packages/backend/src/apps/github/triggers/new-stargazers/index.ts b/packages/backend/src/apps/github/triggers/new-stargazers/index.ts index 91d0a373..4417f9bc 100644 --- a/packages/backend/src/apps/github/triggers/new-stargazers/index.ts +++ b/packages/backend/src/apps/github/triggers/new-stargazers/index.ts @@ -6,37 +6,23 @@ export default defineTrigger({ key: 'newStargazers', pollInterval: 15, description: 'Triggers when a user stars a repository', - substeps: [ + arguments: [ { - key: 'chooseConnection', - name: 'Choose connection', - }, - { - key: 'chooseTrigger', - name: 'Set up a trigger', - arguments: [ - { - label: 'Repo', - key: 'repo', - type: 'dropdown' as const, - required: true, - variables: false, - source: { - type: 'query', - name: 'getData', - arguments: [ - { - name: 'key', - value: 'listRepos', - }, - ], + label: 'Repo', + key: 'repo', + type: 'dropdown' as const, + required: true, + variables: false, + source: { + type: 'query', + name: 'getData', + arguments: [ + { + name: 'key', + value: 'listRepos', }, - }, - ], - }, - { - key: 'testStep', - name: 'Test trigger', + ], + }, }, ], diff --git a/packages/backend/src/apps/github/triggers/new-watchers/index.ts b/packages/backend/src/apps/github/triggers/new-watchers/index.ts index ee3a5f05..f937b18c 100644 --- a/packages/backend/src/apps/github/triggers/new-watchers/index.ts +++ b/packages/backend/src/apps/github/triggers/new-watchers/index.ts @@ -6,37 +6,23 @@ export default defineTrigger({ key: 'newWatchers', pollInterval: 15, description: 'Triggers when a user watches a repository', - substeps: [ + arguments: [ { - key: 'chooseConnection', - name: 'Choose connection', - }, - { - key: 'chooseTrigger', - name: 'Set up a trigger', - arguments: [ - { - label: 'Repo', - key: 'repo', - type: 'dropdown' as const, - required: true, - variables: false, - source: { - type: 'query', - name: 'getData', - arguments: [ - { - name: 'key', - value: 'listRepos', - }, - ], + label: 'Repo', + key: 'repo', + type: 'dropdown' as const, + required: true, + variables: false, + source: { + type: 'query', + name: 'getData', + arguments: [ + { + name: 'key', + value: 'listRepos', }, - }, - ], - }, - { - key: 'testStep', - name: 'Test trigger', + ], + }, }, ], diff --git a/packages/backend/src/apps/rss/triggers/new-items-in-feed/index.ts b/packages/backend/src/apps/rss/triggers/new-items-in-feed/index.ts index e6758d18..b31e1a98 100644 --- a/packages/backend/src/apps/rss/triggers/new-items-in-feed/index.ts +++ b/packages/backend/src/apps/rss/triggers/new-items-in-feed/index.ts @@ -6,24 +6,14 @@ export default defineTrigger({ key: 'newItemsInFeed', description: 'Triggers on new RSS feed items.', pollInterval: 15, - substeps: [ + arguments: [ { - key: 'chooseTrigger', - name: 'Set up trigger', - arguments: [ - { - label: 'Feed URL', - key: 'feedUrl', - type: 'string' as const, - required: true, - description: 'Paste your publicly accessible RSS URL here.', - variables: false, - }, - ], - }, - { - key: 'testStep', - name: 'Test trigger', + label: 'Feed URL', + key: 'feedUrl', + type: 'string' as const, + required: true, + description: 'Paste your publicly accessible RSS URL here.', + variables: false, }, ], diff --git a/packages/backend/src/apps/scheduler/triggers/every-day/index.ts b/packages/backend/src/apps/scheduler/triggers/every-day/index.ts index ff1684ee..d155b752 100644 --- a/packages/backend/src/apps/scheduler/triggers/every-day/index.ts +++ b/packages/backend/src/apps/scheduler/triggers/every-day/index.ts @@ -9,141 +9,131 @@ export default defineTrigger({ name: 'Every day', key: 'everyDay', description: 'Triggers every day.', - substeps: [ + arguments: [ { - key: 'chooseTrigger', - name: 'Set up a trigger', - arguments: [ + label: 'Trigger on weekends?', + key: 'triggersOnWeekend', + type: 'dropdown' as const, + description: 'Should this flow trigger on Saturday and Sunday?', + required: true, + value: true, + variables: false, + options: [ { - label: 'Trigger on weekends?', - key: 'triggersOnWeekend', - type: 'dropdown' as const, - description: 'Should this flow trigger on Saturday and Sunday?', - required: true, + label: 'Yes', value: true, - variables: false, - options: [ - { - label: 'Yes', - value: true, - }, - { - label: 'No', - value: false, - }, - ], }, { - label: 'Time of day', - key: 'hour', - type: 'dropdown' as const, - required: true, - value: null, - variables: false, - options: [ - { - label: '00:00', - value: 0, - }, - { - label: '01:00', - value: 1, - }, - { - label: '02:00', - value: 2, - }, - { - label: '03:00', - value: 3, - }, - { - label: '04:00', - value: 4, - }, - { - label: '05:00', - value: 5, - }, - { - label: '06:00', - value: 6, - }, - { - label: '07:00', - value: 7, - }, - { - label: '08:00', - value: 8, - }, - { - label: '09:00', - value: 9, - }, - { - label: '10:00', - value: 10, - }, - { - label: '11:00', - value: 11, - }, - { - label: '12:00', - value: 12, - }, - { - label: '13:00', - value: 13, - }, - { - label: '14:00', - value: 14, - }, - { - label: '15:00', - value: 15, - }, - { - label: '16:00', - value: 16, - }, - { - label: '17:00', - value: 17, - }, - { - label: '18:00', - value: 18, - }, - { - label: '19:00', - value: 19, - }, - { - label: '20:00', - value: 20, - }, - { - label: '21:00', - value: 21, - }, - { - label: '22:00', - value: 22, - }, - { - label: '23:00', - value: 23, - }, - ], + label: 'No', + value: false, }, ], }, { - key: 'testStep', - name: 'Test trigger', + label: 'Time of day', + key: 'hour', + type: 'dropdown' as const, + required: true, + value: null, + variables: false, + options: [ + { + label: '00:00', + value: 0, + }, + { + label: '01:00', + value: 1, + }, + { + label: '02:00', + value: 2, + }, + { + label: '03:00', + value: 3, + }, + { + label: '04:00', + value: 4, + }, + { + label: '05:00', + value: 5, + }, + { + label: '06:00', + value: 6, + }, + { + label: '07:00', + value: 7, + }, + { + label: '08:00', + value: 8, + }, + { + label: '09:00', + value: 9, + }, + { + label: '10:00', + value: 10, + }, + { + label: '11:00', + value: 11, + }, + { + label: '12:00', + value: 12, + }, + { + label: '13:00', + value: 13, + }, + { + label: '14:00', + value: 14, + }, + { + label: '15:00', + value: 15, + }, + { + label: '16:00', + value: 16, + }, + { + label: '17:00', + value: 17, + }, + { + label: '18:00', + value: 18, + }, + { + label: '19:00', + value: 19, + }, + { + label: '20:00', + value: 20, + }, + { + label: '21:00', + value: 21, + }, + { + label: '22:00', + value: 22, + }, + { + label: '23:00', + value: 23, + }, + ], }, ], diff --git a/packages/backend/src/apps/scheduler/triggers/every-hour/index.ts b/packages/backend/src/apps/scheduler/triggers/every-hour/index.ts index b73987b6..bb05a0b1 100644 --- a/packages/backend/src/apps/scheduler/triggers/every-hour/index.ts +++ b/packages/backend/src/apps/scheduler/triggers/every-hour/index.ts @@ -9,36 +9,26 @@ export default defineTrigger({ name: 'Every hour', key: 'everyHour', description: 'Triggers every hour.', - substeps: [ + arguments: [ { - key: 'chooseTrigger', - name: 'Set up a trigger', - arguments: [ + label: 'Trigger on weekends?', + key: 'triggersOnWeekend', + type: 'dropdown' as const, + description: 'Should this flow trigger on Saturday and Sunday?', + required: true, + value: true, + variables: false, + options: [ { - label: 'Trigger on weekends?', - key: 'triggersOnWeekend', - type: 'dropdown' as const, - description: 'Should this flow trigger on Saturday and Sunday?', - required: true, + label: 'Yes', value: true, - variables: false, - options: [ - { - label: 'Yes', - value: true, - }, - { - label: 'No', - value: false, - }, - ], + }, + { + label: 'No', + value: false, }, ], }, - { - key: 'testStep', - name: 'Test trigger', - }, ], getInterval(parameters: IGlobalVariable['step']['parameters']) { diff --git a/packages/backend/src/apps/scheduler/triggers/every-month/index.ts b/packages/backend/src/apps/scheduler/triggers/every-month/index.ts index 562231a8..5476a8b8 100644 --- a/packages/backend/src/apps/scheduler/triggers/every-month/index.ts +++ b/packages/backend/src/apps/scheduler/triggers/every-month/index.ts @@ -9,256 +9,246 @@ export default defineTrigger({ name: 'Every month', key: 'everyMonth', description: 'Triggers every month.', - substeps: [ + arguments: [ { - key: 'chooseTrigger', - name: 'Set up a trigger', - arguments: [ + label: 'Day of the month', + key: 'day', + type: 'dropdown' as const, + required: true, + value: null, + variables: false, + options: [ { - label: 'Day of the month', - key: 'day', - type: 'dropdown' as const, - required: true, - value: null, - variables: false, - options: [ - { - label: '1', - value: 1, - }, - { - label: '2', - value: 2, - }, - { - label: '3', - value: 3, - }, - { - label: '4', - value: 4, - }, - { - label: '5', - value: 5, - }, - { - label: '6', - value: 6, - }, - { - label: '7', - value: 7, - }, - { - label: '8', - value: 8, - }, - { - label: '9', - value: 9, - }, - { - label: '10', - value: 10, - }, - { - label: '11', - value: 11, - }, - { - label: '12', - value: 12, - }, - { - label: '13', - value: 13, - }, - { - label: '14', - value: 14, - }, - { - label: '15', - value: 15, - }, - { - label: '16', - value: 16, - }, - { - label: '17', - value: 17, - }, - { - label: '18', - value: 18, - }, - { - label: '19', - value: 19, - }, - { - label: '20', - value: 20, - }, - { - label: '21', - value: 21, - }, - { - label: '22', - value: 22, - }, - { - label: '23', - value: 23, - }, - { - label: '24', - value: 24, - }, - { - label: '25', - value: 25, - }, - { - label: '26', - value: 26, - }, - { - label: '27', - value: 27, - }, - { - label: '28', - value: 28, - }, - { - label: '29', - value: 29, - }, - { - label: '30', - value: 30, - }, - { - label: '31', - value: 31, - }, - ], + label: '1', + value: 1, }, { - label: 'Time of day', - key: 'hour', - type: 'dropdown' as const, - required: true, - value: null, - variables: false, - options: [ - { - label: '00:00', - value: 0, - }, - { - label: '01:00', - value: 1, - }, - { - label: '02:00', - value: 2, - }, - { - label: '03:00', - value: 3, - }, - { - label: '04:00', - value: 4, - }, - { - label: '05:00', - value: 5, - }, - { - label: '06:00', - value: 6, - }, - { - label: '07:00', - value: 7, - }, - { - label: '08:00', - value: 8, - }, - { - label: '09:00', - value: 9, - }, - { - label: '10:00', - value: 10, - }, - { - label: '11:00', - value: 11, - }, - { - label: '12:00', - value: 12, - }, - { - label: '13:00', - value: 13, - }, - { - label: '14:00', - value: 14, - }, - { - label: '15:00', - value: 15, - }, - { - label: '16:00', - value: 16, - }, - { - label: '17:00', - value: 17, - }, - { - label: '18:00', - value: 18, - }, - { - label: '19:00', - value: 19, - }, - { - label: '20:00', - value: 20, - }, - { - label: '21:00', - value: 21, - }, - { - label: '22:00', - value: 22, - }, - { - label: '23:00', - value: 23, - }, - ], + label: '2', + value: 2, + }, + { + label: '3', + value: 3, + }, + { + label: '4', + value: 4, + }, + { + label: '5', + value: 5, + }, + { + label: '6', + value: 6, + }, + { + label: '7', + value: 7, + }, + { + label: '8', + value: 8, + }, + { + label: '9', + value: 9, + }, + { + label: '10', + value: 10, + }, + { + label: '11', + value: 11, + }, + { + label: '12', + value: 12, + }, + { + label: '13', + value: 13, + }, + { + label: '14', + value: 14, + }, + { + label: '15', + value: 15, + }, + { + label: '16', + value: 16, + }, + { + label: '17', + value: 17, + }, + { + label: '18', + value: 18, + }, + { + label: '19', + value: 19, + }, + { + label: '20', + value: 20, + }, + { + label: '21', + value: 21, + }, + { + label: '22', + value: 22, + }, + { + label: '23', + value: 23, + }, + { + label: '24', + value: 24, + }, + { + label: '25', + value: 25, + }, + { + label: '26', + value: 26, + }, + { + label: '27', + value: 27, + }, + { + label: '28', + value: 28, + }, + { + label: '29', + value: 29, + }, + { + label: '30', + value: 30, + }, + { + label: '31', + value: 31, }, ], }, { - key: 'testStep', - name: 'Test trigger', + label: 'Time of day', + key: 'hour', + type: 'dropdown' as const, + required: true, + value: null, + variables: false, + options: [ + { + label: '00:00', + value: 0, + }, + { + label: '01:00', + value: 1, + }, + { + label: '02:00', + value: 2, + }, + { + label: '03:00', + value: 3, + }, + { + label: '04:00', + value: 4, + }, + { + label: '05:00', + value: 5, + }, + { + label: '06:00', + value: 6, + }, + { + label: '07:00', + value: 7, + }, + { + label: '08:00', + value: 8, + }, + { + label: '09:00', + value: 9, + }, + { + label: '10:00', + value: 10, + }, + { + label: '11:00', + value: 11, + }, + { + label: '12:00', + value: 12, + }, + { + label: '13:00', + value: 13, + }, + { + label: '14:00', + value: 14, + }, + { + label: '15:00', + value: 15, + }, + { + label: '16:00', + value: 16, + }, + { + label: '17:00', + value: 17, + }, + { + label: '18:00', + value: 18, + }, + { + label: '19:00', + value: 19, + }, + { + label: '20:00', + value: 20, + }, + { + label: '21:00', + value: 21, + }, + { + label: '22:00', + value: 22, + }, + { + label: '23:00', + value: 23, + }, + ], }, ], diff --git a/packages/backend/src/apps/scheduler/triggers/every-week/index.ts b/packages/backend/src/apps/scheduler/triggers/every-week/index.ts index ace091eb..93331440 100644 --- a/packages/backend/src/apps/scheduler/triggers/every-week/index.ts +++ b/packages/backend/src/apps/scheduler/triggers/every-week/index.ts @@ -1,5 +1,5 @@ import { DateTime } from 'luxon'; -import { IGlobalVariable, IJSONValue } from '@automatisch/types'; +import { IGlobalVariable } from '@automatisch/types'; import defineTrigger from '../../../../helpers/define-trigger'; import cronTimes from '../../common/cron-times'; import getNextCronDateTime from '../../common/get-next-cron-date-time'; @@ -9,160 +9,150 @@ export default defineTrigger({ name: 'Every week', key: 'everyWeek', description: 'Triggers every week.', - substeps: [ + arguments: [ { - key: 'chooseTrigger', - name: 'Set up a trigger', - arguments: [ + label: 'Day of the week', + key: 'weekday', + type: 'dropdown' as const, + required: true, + value: null, + variables: false, + options: [ { - label: 'Day of the week', - key: 'weekday', - type: 'dropdown' as const, - required: true, - value: null, - variables: false, - options: [ - { - label: 'Monday', - value: 1, - }, - { - label: 'Tuesday', - value: 2, - }, - { - label: 'Wednesday', - value: 3, - }, - { - label: 'Thursday', - value: 4, - }, - { - label: 'Friday', - value: 5, - }, - { - label: 'Saturday', - value: 6, - }, - { - label: 'Sunday', - value: 0, - }, - ], + label: 'Monday', + value: 1, }, { - label: 'Time of day', - key: 'hour', - type: 'dropdown' as const, - required: true, - value: null, - variables: false, - options: [ - { - label: '00:00', - value: 0, - }, - { - label: '01:00', - value: 1, - }, - { - label: '02:00', - value: 2, - }, - { - label: '03:00', - value: 3, - }, - { - label: '04:00', - value: 4, - }, - { - label: '05:00', - value: 5, - }, - { - label: '06:00', - value: 6, - }, - { - label: '07:00', - value: 7, - }, - { - label: '08:00', - value: 8, - }, - { - label: '09:00', - value: 9, - }, - { - label: '10:00', - value: 10, - }, - { - label: '11:00', - value: 11, - }, - { - label: '12:00', - value: 12, - }, - { - label: '13:00', - value: 13, - }, - { - label: '14:00', - value: 14, - }, - { - label: '15:00', - value: 15, - }, - { - label: '16:00', - value: 16, - }, - { - label: '17:00', - value: 17, - }, - { - label: '18:00', - value: 18, - }, - { - label: '19:00', - value: 19, - }, - { - label: '20:00', - value: 20, - }, - { - label: '21:00', - value: 21, - }, - { - label: '22:00', - value: 22, - }, - { - label: '23:00', - value: 23, - }, - ], + label: 'Tuesday', + value: 2, + }, + { + label: 'Wednesday', + value: 3, + }, + { + label: 'Thursday', + value: 4, + }, + { + label: 'Friday', + value: 5, + }, + { + label: 'Saturday', + value: 6, + }, + { + label: 'Sunday', + value: 0, }, ], }, { - key: 'testStep', - name: 'Test trigger', + label: 'Time of day', + key: 'hour', + type: 'dropdown' as const, + required: true, + value: null, + variables: false, + options: [ + { + label: '00:00', + value: 0, + }, + { + label: '01:00', + value: 1, + }, + { + label: '02:00', + value: 2, + }, + { + label: '03:00', + value: 3, + }, + { + label: '04:00', + value: 4, + }, + { + label: '05:00', + value: 5, + }, + { + label: '06:00', + value: 6, + }, + { + label: '07:00', + value: 7, + }, + { + label: '08:00', + value: 8, + }, + { + label: '09:00', + value: 9, + }, + { + label: '10:00', + value: 10, + }, + { + label: '11:00', + value: 11, + }, + { + label: '12:00', + value: 12, + }, + { + label: '13:00', + value: 13, + }, + { + label: '14:00', + value: 14, + }, + { + label: '15:00', + value: 15, + }, + { + label: '16:00', + value: 16, + }, + { + label: '17:00', + value: 17, + }, + { + label: '18:00', + value: 18, + }, + { + label: '19:00', + value: 19, + }, + { + label: '20:00', + value: 20, + }, + { + label: '21:00', + value: 21, + }, + { + label: '22:00', + value: 22, + }, + { + label: '23:00', + value: 23, + }, + ], }, ], diff --git a/packages/backend/src/apps/twilio/triggers/receive-sms/index.ts b/packages/backend/src/apps/twilio/triggers/receive-sms/index.ts index 30227cba..fe3ad6d1 100644 --- a/packages/backend/src/apps/twilio/triggers/receive-sms/index.ts +++ b/packages/backend/src/apps/twilio/triggers/receive-sms/index.ts @@ -6,28 +6,14 @@ export default defineTrigger({ key: 'receiveSms', pollInterval: 15, description: 'Will be triggered when a new SMS is received.', - substeps: [ + arguments: [ { - key: 'chooseConnection', - name: 'Choose connection', - }, - { - key: 'chooseTrigger', - name: 'Set up a trigger', - arguments: [ - { - label: 'To Number', - key: 'toNumber', - type: 'string', - required: true, - description: - 'The number to receive the SMS on. It should be a Twilio number.', - }, - ], - }, - { - key: 'testStep', - name: 'Test trigger', + label: 'To Number', + key: 'toNumber', + type: 'string', + required: true, + description: + 'The number to receive the SMS on. It should be a Twilio number.', }, ], diff --git a/packages/backend/src/apps/twitter/triggers/my-tweets/index.ts b/packages/backend/src/apps/twitter/triggers/my-tweets/index.ts index 134e9084..fd616b0d 100644 --- a/packages/backend/src/apps/twitter/triggers/my-tweets/index.ts +++ b/packages/backend/src/apps/twitter/triggers/my-tweets/index.ts @@ -6,16 +6,6 @@ export default defineTrigger({ key: 'myTweets', pollInterval: 15, description: 'Will be triggered when you tweet something new.', - substeps: [ - { - key: 'chooseConnection', - name: 'Choose connection', - }, - { - key: 'testStep', - name: 'Test trigger', - }, - ], async run($) { await getUserTweets($, { currentUser: true }); diff --git a/packages/backend/src/apps/twitter/triggers/new-follower-of-me/index.ts b/packages/backend/src/apps/twitter/triggers/new-follower-of-me/index.ts index 4ce76592..04d6eef6 100644 --- a/packages/backend/src/apps/twitter/triggers/new-follower-of-me/index.ts +++ b/packages/backend/src/apps/twitter/triggers/new-follower-of-me/index.ts @@ -6,16 +6,6 @@ export default defineTrigger({ key: 'myFollowers', pollInterval: 15, description: 'Will be triggered when you have a new follower.', - substeps: [ - { - key: 'chooseConnection', - name: 'Choose connection', - }, - { - key: 'testStep', - name: 'Test trigger', - }, - ], async run($) { await myFollowers($); diff --git a/packages/backend/src/apps/twitter/triggers/search-tweets/index.ts b/packages/backend/src/apps/twitter/triggers/search-tweets/index.ts index 062ddc84..e89436cd 100644 --- a/packages/backend/src/apps/twitter/triggers/search-tweets/index.ts +++ b/packages/backend/src/apps/twitter/triggers/search-tweets/index.ts @@ -7,26 +7,12 @@ export default defineTrigger({ pollInterval: 15, description: 'Will be triggered when any user tweet something containing a specific keyword, phrase, username or hashtag.', - substeps: [ + arguments: [ { - key: 'chooseConnection', - name: 'Choose connection', - }, - { - key: 'chooseTrigger', - name: 'Set up a trigger', - arguments: [ - { - label: 'Search Term', - key: 'searchTerm', - type: 'string' as const, - required: true, - }, - ], - }, - { - key: 'testStep', - name: 'Test trigger', + label: 'Search Term', + key: 'searchTerm', + type: 'string' as const, + required: true, }, ], diff --git a/packages/backend/src/apps/twitter/triggers/user-tweets/index.ts b/packages/backend/src/apps/twitter/triggers/user-tweets/index.ts index 92ed126c..50ed3fce 100644 --- a/packages/backend/src/apps/twitter/triggers/user-tweets/index.ts +++ b/packages/backend/src/apps/twitter/triggers/user-tweets/index.ts @@ -6,26 +6,12 @@ export default defineTrigger({ key: 'userTweets', pollInterval: 15, description: 'Will be triggered when a specific user tweet something new.', - substeps: [ + arguments: [ { - key: 'chooseConnection', - name: 'Choose connection', - }, - { - key: 'chooseTrigger', - name: 'Set up a trigger', - arguments: [ - { - label: 'Username', - key: 'username', - type: 'string' as const, - required: true, - }, - ], - }, - { - key: 'testStep', - name: 'Test trigger', + label: 'Username', + key: 'username', + type: 'string' as const, + required: true, }, ], diff --git a/packages/backend/src/helpers/define-trigger.ts b/packages/backend/src/helpers/define-trigger.ts index 3e093858..19b5c39d 100644 --- a/packages/backend/src/helpers/define-trigger.ts +++ b/packages/backend/src/helpers/define-trigger.ts @@ -1,5 +1,7 @@ -import { ITrigger } from '@automatisch/types'; +import { IRawTrigger } from '@automatisch/types'; -export default function defineTrigger(triggerDefinition: ITrigger): ITrigger { +export default function defineTrigger( + triggerDefinition: IRawTrigger +): IRawTrigger { return triggerDefinition; } diff --git a/packages/backend/src/helpers/get-app.ts b/packages/backend/src/helpers/get-app.ts index d9495661..8632d71f 100644 --- a/packages/backend/src/helpers/get-app.ts +++ b/packages/backend/src/helpers/get-app.ts @@ -1,4 +1,5 @@ -import { IApp } from '@automatisch/types'; +import { IApp, IRawTrigger, ITrigger } from '@automatisch/types'; +import { omit, cloneDeep } from 'lodash'; async function getDefaultExport(path: string) { return (await import(path)).default; @@ -8,8 +9,40 @@ function stripFunctions(data: C): C { return JSON.parse(JSON.stringify(data)); } +const chooseConnectionStep = { + key: 'chooseConnection', + name: 'Choose connection', +}; + +const testStep = { + key: 'testStep', + name: 'Test trigger', +}; + const getApp = async (appKey: string, stripFuncs = true) => { - const appData: IApp = await getDefaultExport(`../apps/${appKey}`); + const appData: IApp = cloneDeep(await getDefaultExport(`../apps/${appKey}`)); + + appData.triggers = appData?.triggers?.map((trigger: IRawTrigger) => { + const computedTrigger: ITrigger = omit(trigger, ['arguments']); + + computedTrigger.substeps = []; + + if (appData.supportsConnections) { + computedTrigger.substeps.push(chooseConnectionStep); + } + + if (trigger.arguments) { + computedTrigger.substeps.push({ + key: 'chooseTrigger', + name: 'Set up a trigger', + arguments: trigger.arguments, + }); + } + + computedTrigger.substeps.push(testStep); + + return computedTrigger; + }); if (stripFuncs) { return stripFunctions(appData); diff --git a/packages/types/index.d.ts b/packages/types/index.d.ts index 49b1b385..84a267da 100644 --- a/packages/types/index.d.ts +++ b/packages/types/index.d.ts @@ -205,17 +205,24 @@ export interface ITriggerItem { }; } -export interface ITrigger { +export interface IBaseTrigger { name: string; key: string; pollInterval?: number; description: string; - substeps: ISubstep[]; getInterval?(parameters: IStep['parameters']): string; run($: IGlobalVariable): Promise; sort?(item: ITriggerItem, nextItem: ITriggerItem): number; } +export interface IRawTrigger extends IBaseTrigger { + arguments?: IField[]; +} + +export interface ITrigger extends IBaseTrigger { + substeps?: ISubstep[]; +} + export interface IActionOutput { data: IActionItem; error?: IJSONObject;