UNPKG

n8n-nodes-base

Version:

Base nodes of n8n

258 lines 8.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.description = exports.properties = void 0; exports.execute = execute; const luxon_1 = require("luxon"); const utilities_1 = require("../../../../../../utils/utilities"); const descriptions_1 = require("../../descriptions"); const utils_1 = require("../../helpers/utils"); const transport_1 = require("../../transport"); exports.properties = [ descriptions_1.calendarRLC, descriptions_1.eventRLC, { displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', placeholder: 'Add Field', default: {}, options: [ { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-multi-options displayName: 'Categories', name: 'categories', type: 'multiOptions', description: 'Choose from the list, or specify IDs using an <a href="https://docs.n8n.io/code/expressions/">expression</a>', typeOptions: { loadOptionsMethod: 'getCategoriesNames', }, default: [], }, { displayName: 'Description', name: 'body', type: 'string', typeOptions: { rows: 2, }, default: '', }, { displayName: 'Description Preview', name: 'bodyPreview', type: 'string', default: '', }, { displayName: 'End', name: 'end', type: 'dateTime', default: '', }, { displayName: 'Hide Attendees', name: 'hideAttendees', type: 'boolean', default: false, description: 'Whether to allow each attendee to only see themselves in the meeting request and meeting tracking list', }, { displayName: 'Importance', name: 'importance', type: 'options', default: 'low', options: [ { name: 'Low', value: 'low', }, { name: 'Normal', value: 'normal', }, { name: 'High', value: 'high', }, ], }, { displayName: 'Is All Day', name: 'isAllDay', type: 'boolean', default: false, }, { displayName: 'Is Cancelled', name: 'isCancelled', type: 'boolean', default: false, }, { displayName: 'Is Draft', name: 'isDraft', type: 'boolean', default: false, }, { displayName: 'Is Online Meeting', name: 'isOnlineMeeting', type: 'boolean', default: true, }, { displayName: 'Sensitivity', name: 'sensitivity', type: 'options', default: 'normal', options: [ { name: 'Normal', value: 'normal', }, { name: 'Personal', value: 'personal', }, { name: 'Private', value: 'private', }, { name: 'Confidential', value: 'confidential', }, ], }, { displayName: 'Show As', name: 'showAs', type: 'options', default: 'free', options: [ { name: 'Busy', value: 'busy', }, { name: 'Free', value: 'free', }, { name: 'Oof', value: 'oof', }, { name: 'Tentative', value: 'tentative', }, { name: 'Working Elsewhere', value: 'workingElsewhere', }, ], }, { displayName: 'Start', name: 'start', type: 'dateTime', default: '', }, { displayName: 'Timezone', name: 'timeZone', type: 'string', default: '', }, { displayName: 'Title', name: 'subject', type: 'string', default: '', }, { displayName: 'Type', name: 'type', type: 'options', default: 'singleInstance', options: [ { name: 'Single Instance', value: 'singleInstance', }, { name: 'Occurrence', value: 'occurrence', }, { name: 'Exception', value: 'exception', }, { name: 'Series Master', value: 'seriesMaster', }, ], }, ], }, ]; const displayOptions = { show: { resource: ['event'], operation: ['update'], }, }; exports.description = (0, utilities_1.updateDisplayOptions)(displayOptions, exports.properties); async function execute(index) { const additionalFields = this.getNodeParameter('additionalFields', index); const eventId = (0, utils_1.decodeOutlookId)(this.getNodeParameter('eventId', index, undefined, { extractValue: true, })); let timeZone = 'UTC'; if (additionalFields.timeZone) { timeZone = additionalFields.timeZone; delete additionalFields.timeZone; } if (additionalFields.body) { additionalFields.body = { content: additionalFields.body, contentType: 'html', }; } let startDateTime = additionalFields.start; let endDateTime = additionalFields.end; if (additionalFields.isAllDay) { startDateTime = luxon_1.DateTime.fromISO(startDateTime, { zone: timeZone }).toFormat('yyyy-MM-dd') || luxon_1.DateTime.utc().toFormat('yyyy-MM-dd'); endDateTime = luxon_1.DateTime.fromISO(endDateTime, { zone: timeZone }).toFormat('yyyy-MM-dd') || luxon_1.DateTime.utc().toFormat('yyyy-MM-dd'); const minimalWholeDayDuration = 24; const duration = luxon_1.DateTime.fromISO(startDateTime, { zone: timeZone }).diff(luxon_1.DateTime.fromISO(endDateTime, { zone: timeZone })).hours; if (duration < minimalWholeDayDuration) { endDateTime = luxon_1.DateTime.fromISO(startDateTime, { zone: timeZone }).plus({ hours: 24 }).toISO(); } } const body = { ...additionalFields, }; if (startDateTime) { body.start = { dateTime: startDateTime, timeZone, }; } if (endDateTime) { body.end = { dateTime: endDateTime, timeZone, }; } const endpoint = `/calendar/events/${eventId}`; const responseData = await transport_1.microsoftApiRequest.call(this, 'PATCH', endpoint, body); const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: index } }); return executionData; } //# sourceMappingURL=update.operation.js.map