feat(google-calendar): add new event trigger

This commit is contained in:
Rıdvan Akca
2023-09-19 12:46:16 +03:00
parent 6a66b65f2a
commit 242b68889a
6 changed files with 100 additions and 1 deletions

View File

@@ -0,0 +1,3 @@
import listCalendars from './list-calendars';
export default [listCalendars];

View File

@@ -0,0 +1,36 @@
import { IGlobalVariable, IJSONObject } from '@automatisch/types';
export default {
name: 'List calendars',
key: 'listCalendars',
async run($: IGlobalVariable) {
const drives: {
data: IJSONObject[];
} = {
data: [],
};
const params = {
pageToken: undefined as unknown as string,
};
do {
const { data } = await $.http.get(`/v3/users/me/calendarList`, {
params,
});
params.pageToken = data.nextPageToken;
if (data.items) {
for (const calendar of data.items) {
drives.data.push({
value: calendar.id,
name: calendar.summary,
});
}
}
} while (params.pageToken);
return drives;
},
};

View File

@@ -2,6 +2,7 @@ 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: 'Google Calendar',
@@ -15,4 +16,5 @@ export default defineApp({
beforeRequest: [addAuthHeader],
auth,
triggers,
dynamicData,
});

View File

@@ -1,3 +1,4 @@
import newCalendar from './new-calendar';
import newEvent from './new-event';
export default [newCalendar];
export default [newCalendar, newEvent];

View File

@@ -0,0 +1,55 @@
import defineTrigger from '../../../../helpers/define-trigger';
export default defineTrigger({
name: 'New event',
key: 'newEvent',
pollInterval: 15,
description: 'Triggers when a new event is created.',
arguments: [
{
label: 'Calendar',
key: 'calendarId',
type: 'dropdown' as const,
required: true,
description: '',
variables: false,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listCalendars',
},
],
},
},
],
async run($) {
const calendarId = $.step.parameters.calendarId;
const params: Record<string, unknown> = {
pageToken: undefined as unknown as string,
orderBy: 'updated',
};
do {
const { data } = await $.http.get(`/v3/calendars/${calendarId}/events`, {
params,
});
params.pageToken = data.nextPageToken;
if (data.items?.length) {
for (const event of data.items.reverse()) {
$.pushTriggerItem({
raw: event,
meta: {
internalId: event.etag,
},
});
}
}
} while (params.pageToken);
},
});

View File

@@ -3,6 +3,8 @@ favicon: /favicons/google-calendar.svg
items:
- name: New calendar
desc: Triggers when a new calendar is created.
- name: New event
desc: Triggers when a new event is created.
---
<script setup>