From ed4618a1f3acfd4b7f92638e9b834988b3644df0 Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Sat, 18 May 2024 23:42:06 +1200 Subject: [PATCH] Feature: iCalendar (ICS) viewer (#298) --- package-lock.json | 6 + package.json | 1 + .../ui-src/components/message/Attachments.vue | 138 +++++++++++++++++- server/ui-src/mixins/CommonMixins.js | 3 + 4 files changed, 141 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0a76ecdf43..67b6f1cbf7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "bootstrap5-tags": "^1.6.1", "color-hash": "^2.0.2", "dayjs": "^1.11.10", + "ical.js": "^2.0.1", "modern-screenshot": "^4.4.30", "prismjs": "^1.29.0", "rapidoc": "^9.3.4", @@ -1701,6 +1702,11 @@ "node": ">= 0.4" } }, + "node_modules/ical.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ical.js/-/ical.js-2.0.1.tgz", + "integrity": "sha512-uYYb1CwTXbd9NP/xTtgQZ5ivv6bpUjQu9VM98s3X78L3XRu00uJW5ZtmnLwyxhztpf5fSiRyDpFW7ZNCePlaPw==" + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", diff --git a/package.json b/package.json index 21ad28e4c9..288d36b804 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "bootstrap5-tags": "^1.6.1", "color-hash": "^2.0.2", "dayjs": "^1.11.10", + "ical.js": "^2.0.1", "modern-screenshot": "^4.4.30", "prismjs": "^1.29.0", "rapidoc": "^9.3.4", diff --git a/server/ui-src/components/message/Attachments.vue b/server/ui-src/components/message/Attachments.vue index db2e4f8a33..fa350fed06 100644 --- a/server/ui-src/components/message/Attachments.vue +++ b/server/ui-src/components/message/Attachments.vue @@ -1,6 +1,7 @@ - diff --git a/server/ui-src/mixins/CommonMixins.js b/server/ui-src/mixins/CommonMixins.js index 22ee4edca9..3cc1512584 100644 --- a/server/ui-src/mixins/CommonMixins.js +++ b/server/ui-src/mixins/CommonMixins.js @@ -243,6 +243,9 @@ export default { if (['zip', 'tar', 'rar', 'bz2', 'gz', 'xz'].includes(ext)) { return 'bi-file-zip-fill' } + if (['ics'].includes(ext)) { + return 'bi-calendar-event' + } if (a.ContentType.match(/^audio\//)) { return 'bi-file-music-fill' }