From dd39d18e2ad70b8ec3f5d9b91ca745465da56e57 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 27 May 2024 14:22:34 +0200 Subject: [PATCH] Changes #1603 --- plugins/view-ics/message.js | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/plugins/view-ics/message.js b/plugins/view-ics/message.js index 7a5d514c4..4610d5249 100644 --- a/plugins/view-ics/message.js +++ b/plugins/view-ics/message.js @@ -11,16 +11,27 @@ dateRegEx = /(TZID=(?[^:]+):)?(?[0-9]{4})(?[0-9]{2})(?[0-9]{2})T(?[0-9]{2})(?[0-9]{2})(?[0-9]{2})(?Z?)/, parseDate = str => { let parts = dateRegEx.exec(str)?.groups, - options = {dateStyle: 'long', timeStyle: 'short'}; + options = {dateStyle: 'long', timeStyle: 'short'}, + date = (parts ? new Date( + parseInt(parts.year, 10), + parseInt(parts.month, 10) - 1, + parseInt(parts.day, 10), + parseInt(parts.hour, 10), + parseInt(parts.minute, 10), + parseInt(parts.second, 10) + ) : new Date(str)); parts?.tz && (options.timeZone = parts.tz); - return (parts ? new Date( - parseInt(parts.year, 10), - parseInt(parts.month, 10) - 1, - parseInt(parts.day, 10), - parseInt(parts.hour, 10), - parseInt(parts.minute, 10), - parseInt(parts.second, 10) - ) : new Date(str)).format(options); + try { + return date.format(options); + } catch (e) { + console.error(e); + if (options.timeZone) { + // TODO: handle messy vtimezones +// VTIMEZONEs[options.timeZone]; + options.timeZone = undefined; + return date.format(options); + } + } }; attachmentsPlace.after(Element.fromHTML(`