From a36c8c29cb6e912955df0243889ead05abbd90a8 Mon Sep 17 00:00:00 2001 From: lesion Date: Sat, 4 Feb 2023 10:42:06 +0100 Subject: [PATCH] do not use end time when not used, fix #233 --- server/api/controller/export.js | 15 +++++++++++---- server/api/models/event.js | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/server/api/controller/export.js b/server/api/controller/export.js index 2aa410b1..08cfe1ef 100644 --- a/server/api/controller/export.js +++ b/server/api/controller/export.js @@ -81,14 +81,13 @@ const exportController = { ics (_req, res, events, alarms = []) { const settings = res.locals.settings const eventsMap = events.map(e => { + const tmpStart = moment.unix(e.start_datetime) - const tmpEnd = moment.unix(e.end_datetime) const start = tmpStart.utc(true).format('YYYY-M-D-H-m').split('-').map(Number) - const end = tmpEnd.utc(true).format('YYYY-M-D-H-m').split('-').map(Number) - return { + + const ret = { uid: `${e.id}@${settings.hostname}`, start, - end, title: `[${settings.title}] ${e.title}`, description: htmlToText(e.description), htmlContent: e.description, @@ -98,6 +97,14 @@ const exportController = { categories: e.tags.map(t => t.tag), alarms } + + if (e.end_datetime) { + const tmpEnd = moment.unix(e.end_datetime) + const end = tmpEnd.utc(true).format('YYYY-M-D-H-m').split('-').map(Number) + ret.end = end + } + + return ret }) res.type('text/calendar; charset=UTF-8') ics.createEvents(eventsMap, (err, value) => { diff --git a/server/api/models/event.js b/server/api/models/event.js index c0e6c7d5..362d9134 100644 --- a/server/api/models/event.js +++ b/server/api/models/event.js @@ -69,7 +69,7 @@ module.exports = (sequelize, DataTypes) => { url: `${config.baseurl}/event/${this.slug || this.id}`, type: 'Event', startTime: dayjs.unix(this.start_datetime).tz().locale(locale).format(), - endTime: this.end_datetime ? dayjs.unix(this.end_datetime).tz().locale(locale).format() : null, + ...( this.end_datetime ? { endTime : dayjs.unix(this.end_datetime).tz().locale(locale).format() } : {} ), location: { name: this.place.name, address: this.place.address,