From b839f24c18a0283de08dadf3ddfa95ffda7c8c5d Mon Sep 17 00:00:00 2001 From: hamza221 Date: Tue, 2 May 2023 19:48:55 +0200 Subject: [PATCH] fixup! Convert mail to task Signed-off-by: hamza221 --- package-lock.json | 51 ++++++++++++++++++++++++++++++++++++ package.json | 1 + src/components/TaskModal.vue | 38 ++++++++++++++++++++++++--- src/store/calendar.js | 2 +- src/store/getters.js | 5 ++-- 5 files changed, 91 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 23008fd78b..4bffe90339 100644 --- a/package-lock.json +++ b/package-lock.json @@ -59,6 +59,7 @@ "nextcloud_issuetemplate_builder": "^0.1.0", "node-forge": "^1.3.1", "p-limit": "^4.0.0", + "p-queue": "^7.3.4", "printscout": "2.0.3", "process": "^0.11.10", "ramda": "^0.28.0", @@ -8370,6 +8371,11 @@ "node": ">=6" } }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -13219,6 +13225,32 @@ "node": ">=8" } }, + "node_modules/p-queue": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.4.tgz", + "integrity": "sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg==", + "dependencies": { + "eventemitter3": "^4.0.7", + "p-timeout": "^5.0.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -23769,6 +23801,11 @@ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, "events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -27253,6 +27290,20 @@ "aggregate-error": "^3.0.0" } }, + "p-queue": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.4.tgz", + "integrity": "sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg==", + "requires": { + "eventemitter3": "^4.0.7", + "p-timeout": "^5.0.2" + } + }, + "p-timeout": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==" + }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", diff --git a/package.json b/package.json index 34af58fa80..d4a5f25a8b 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "nextcloud_issuetemplate_builder": "^0.1.0", "node-forge": "^1.3.1", "p-limit": "^4.0.0", + "p-queue": "^7.3.4", "printscout": "2.0.3", "process": "^0.11.10", "ramda": "^0.28.0", diff --git a/src/components/TaskModal.vue b/src/components/TaskModal.vue index 52ef73192c..97fc49fbc3 100644 --- a/src/components/TaskModal.vue +++ b/src/components/TaskModal.vue @@ -66,9 +66,11 @@ import { NcDatetimePicker as DatetimePicker, NcModal as Modal, NcMultiselect as import jstz from 'jstz' import logger from '../logger' +import ICAL from 'ical.js' +import Task from '../task.js' import CalendarPickerOption from './CalendarPickerOption' import { showError, showSuccess } from '@nextcloud/dialogs' -import moment from 'moment' +import moment from '@nextcloud/moment' export default { name: 'TaskModal', @@ -132,6 +134,36 @@ export default { onClose() { this.$emit('close') }, + async createTask(taskData) { + const task = new Task('BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//Nextcloud Mail v' + this.$store.getters.getAppVersion + '\nEND:VCALENDAR', taskData.calendar) + task.created = ICAL.Time.now() + task.summary = taskData.summary + task.hidesubtasks = 0 + if (taskData.priority) { + task.priority = taskData.priority + } + if (taskData.complete) { + task.complete = taskData.complete + } + if (taskData.note) { + task.note = taskData.note + } + if (taskData.due) { + task.due = taskData.due + } + if (taskData.start) { + task.start = taskData.start + } + if (taskData.allDay) { + task.allDay = taskData.allDay + } + const vData = ICAL.stringify(task.jCal) + + await task.calendar.dav.createVObject(vData) + + return task + + }, async onSave() { this.saving = true @@ -146,7 +178,7 @@ export default { try { logger.debug('create task', taskData) - this.$store.commit('createTask', taskData) + await this.createTask(taskData) showSuccess(t('mail', 'Task created')) @@ -204,4 +236,4 @@ input , textarea { :deep(.mx-datepicker) { width: 213px; } - + \ No newline at end of file diff --git a/src/store/calendar.js b/src/store/calendar.js index 9026a60860..0cfe36b658 100644 --- a/src/store/calendar.js +++ b/src/store/calendar.js @@ -91,4 +91,4 @@ export function mapDavShareeToSharee(sharee) { isCircle: sharee.href.startsWith('principal:principals/circles/'), uri: sharee.href, } -} +} \ No newline at end of file diff --git a/src/store/getters.js b/src/store/getters.js index 0f7845312b..547218d53d 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -25,7 +25,7 @@ import { defaultTo, head, prop, sortBy } from 'ramda' import { UNIFIED_ACCOUNT_ID } from './constants' import { normalizedEnvelopeListId } from './normalization' import { getCalendarHome } from '../service/caldavService' -import toCalendar from './asba' +import toCalendar from './calendar' export const getters = { getPreference: (state) => (key, def) => { @@ -137,4 +137,5 @@ export const getters = { }).map(calendar => toCalendar(calendar)) }, getNcVersion: (state) => state.preferences?.ncVersion, -} + getAppVersion: (state) => state.preferences?.version, +} \ No newline at end of file