From d9c311d045c2da01ec55987e04ea7b102892b192 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Wed, 24 Apr 2024 15:40:03 +0200 Subject: [PATCH] feat(gmail): add star email action --- .../backend/src/apps/gmail/actions/index.js | 3 +- .../apps/gmail/actions/star-email/index.js | 45 +++++++++++++++++++ .../src/apps/gmail/dynamic-data/index.js | 9 +++- .../gmail/dynamic-data/list-messages/index.js | 31 +++++++++++++ packages/docs/pages/apps/gmail/actions.md | 2 + 5 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 packages/backend/src/apps/gmail/actions/star-email/index.js create mode 100644 packages/backend/src/apps/gmail/dynamic-data/list-messages/index.js diff --git a/packages/backend/src/apps/gmail/actions/index.js b/packages/backend/src/apps/gmail/actions/index.js index 9a3816a9..28b72220 100644 --- a/packages/backend/src/apps/gmail/actions/index.js +++ b/packages/backend/src/apps/gmail/actions/index.js @@ -2,5 +2,6 @@ import createDraft from './create-draft/index.js'; import replyToEmail from './reply-to-email/index.js'; import sendEmail from './send-email/index.js'; import sendToTrash from './send-to-trash/index.js'; +import starEmail from './star-email/index.js'; -export default [createDraft, replyToEmail, sendEmail, sendToTrash]; +export default [createDraft, replyToEmail, sendEmail, sendToTrash, starEmail]; diff --git a/packages/backend/src/apps/gmail/actions/star-email/index.js b/packages/backend/src/apps/gmail/actions/star-email/index.js new file mode 100644 index 00000000..c7e06bcc --- /dev/null +++ b/packages/backend/src/apps/gmail/actions/star-email/index.js @@ -0,0 +1,45 @@ +import defineAction from '../../../../helpers/define-action.js'; + +export default defineAction({ + name: 'Star an email', + key: 'starEmail', + description: 'Star an email message.', + arguments: [ + { + label: 'Message ID', + key: 'messageId', + type: 'dropdown', + required: true, + description: '', + variables: true, + source: { + type: 'query', + name: 'getDynamicData', + arguments: [ + { + name: 'key', + value: 'listMessages', + }, + ], + }, + }, + ], + + async run($) { + const { messageId } = $.step.parameters; + const userId = $.auth.data.userId; + + const body = { + addLabelIds: ['STARRED'], + }; + + const { data } = await $.http.post( + `/gmail/v1/users/${userId}/messages/${messageId}/modify`, + body + ); + + $.setActionItem({ + raw: data, + }); + }, +}); diff --git a/packages/backend/src/apps/gmail/dynamic-data/index.js b/packages/backend/src/apps/gmail/dynamic-data/index.js index a89b1b9b..37661b45 100644 --- a/packages/backend/src/apps/gmail/dynamic-data/index.js +++ b/packages/backend/src/apps/gmail/dynamic-data/index.js @@ -1,6 +1,13 @@ import listEmails from './list-emails/index.js'; import listLabels from './list-labels/index.js'; +import listMessages from './list-messages/index.js'; import listSignatures from './list-signatures/index.js'; import listThreads from './list-threads/index.js'; -export default [listEmails, listLabels, listSignatures, listThreads]; +export default [ + listEmails, + listLabels, + listMessages, + listSignatures, + listThreads, +]; diff --git a/packages/backend/src/apps/gmail/dynamic-data/list-messages/index.js b/packages/backend/src/apps/gmail/dynamic-data/list-messages/index.js new file mode 100644 index 00000000..077267be --- /dev/null +++ b/packages/backend/src/apps/gmail/dynamic-data/list-messages/index.js @@ -0,0 +1,31 @@ +export default { + name: 'List messages', + key: 'listMessages', + + async run($) { + const messages = { + data: [], + }; + const userId = $.auth.data.userId; + + const { data } = await $.http.get(`/gmail/v1/users/${userId}/messages`); + + if (data.messages) { + for (const message of data.messages) { + const { data: messageData } = await $.http.get( + `/gmail/v1/users/${userId}/messages/${message.id}` + ); + const subject = messageData.payload.headers.find( + (header) => header.name === 'Subject' + ); + + messages.data.push({ + value: message.id, + name: subject?.value, + }); + } + } + + return messages; + }, +}; diff --git a/packages/docs/pages/apps/gmail/actions.md b/packages/docs/pages/apps/gmail/actions.md index 2ad3178c..0754a728 100644 --- a/packages/docs/pages/apps/gmail/actions.md +++ b/packages/docs/pages/apps/gmail/actions.md @@ -9,6 +9,8 @@ items: desc: Send a new email message. - name: Send to trash desc: Send an existing email message to the trash. + - name: Star an email + desc: Star an email message. ---