diff options
author | greta <gretadoci@gmail.com> | 2022-05-02 18:52:29 +0300 |
---|---|---|
committer | Richard Steinmetz <richard@steinmetz.cloud> | 2022-05-09 13:00:03 +0300 |
commit | a4b7ca3feec30ff0302fdbf1f6fcbdd3708f1954 (patch) | |
tree | a613a4fe0e0bf75f822877fe4ecfe82ae92107d3 /src | |
parent | 68badc6ef8e9f07d9e758dbfd38532b69112988d (diff) |
Stop message from sending while editing
Signed-off-by: greta <gretadoci@gmail.com>
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
Diffstat (limited to 'src')
-rw-r--r-- | src/components/NewMessageModal.vue | 5 | ||||
-rw-r--r-- | src/store/actions.js | 30 | ||||
-rw-r--r-- | src/store/mutations.js | 3 | ||||
-rw-r--r-- | src/views/Home.vue | 7 |
4 files changed, 38 insertions, 7 deletions
diff --git a/src/components/NewMessageModal.vue b/src/components/NewMessageModal.vue index faa1d3362..765c24951 100644 --- a/src/components/NewMessageModal.vue +++ b/src/components/NewMessageModal.vue @@ -2,7 +2,7 @@ <Modal size="normal" :title="modalTitle" - @close="$emit('close')"> + @close="$emit('close', { restoreOriginalSendAt: true })"> <Composer :from-account="composerData.accountId" :to="composerData.to" @@ -17,8 +17,7 @@ :draft="saveDraft" :send="sendMessage" :forwarded-messages="forwardedMessages" - @discard-draft="discardDraft" - @close="$emit('close')" /> + @discard-draft="discardDraft" /> </Modal> </template> <script> diff --git a/src/store/actions.js b/src/store/actions.js index 8f3ee9bf2..77de3ef08 100644 --- a/src/store/actions.js +++ b/src/store/actions.js @@ -84,7 +84,7 @@ import { updateAccount as updateSieveAccount } from '../service/SieveService' import { PAGE_SIZE, UNIFIED_INBOX_ID } from './constants' import * as ThreadService from '../service/ThreadService' import { getPrioritySearchQueries } from '../util/priorityInbox' -import { html, plain } from '../util/text' +import { html, plain, toPlain } from '../util/text' import Axios from '@nextcloud/axios' import { generateUrl } from '@nextcloud/router' import { showWarning } from '@nextcloud/dialogs' @@ -357,14 +357,40 @@ export default { } } + // Stop schedule when editing outbox messages and backup sendAt timestamp + let originalSendAt + if (type === 'outbox' && data.id && data.sendAt) { + originalSendAt = data.sendAt + const message = { + ...data, + body: data.isHtml ? data.body.value : toPlain(data.body).value, + } + await dispatch('outbox/stopMessage', { message }) + } + commit('showMessageComposer', { type, data, forwardedMessages, templateMessageId, + originalSendAt, }) }, - async closeMessageComposer({ commit }) { + async closeMessageComposer({ commit, dispatch, getters }, { restoreOriginalSendAt }) { + // Restore original sendAt timestamp when requested + const message = getters.composerMessage + if (restoreOriginalSendAt && message.type === 'outbox' && message.options?.originalSendAt) { + const body = message.data.body + await dispatch('outbox/updateMessage', { + id: message.data.id, + message: { + ...message.data, + body: message.data.isHtml ? body.value : toPlain(body), + sendAt: message.options.originalSendAt, + }, + }) + } + commit('hideMessageComposer') }, async fetchEnvelope({ commit, getters }, id) { diff --git a/src/store/mutations.js b/src/store/mutations.js index 0b1a0fdb5..c6fec5724 100644 --- a/src/store/mutations.js +++ b/src/store/mutations.js @@ -181,12 +181,13 @@ export default { } removeRec(account) }, - showMessageComposer(state, { type, data, forwardedMessages }) { + showMessageComposer(state, { type, data, forwardedMessages, originalSendAt }) { Vue.set(state, 'newMessage', { type, data, options: { forwardedMessages, + originalSendAt, }, }) }, diff --git a/src/views/Home.vue b/src/views/Home.vue index 33bd93940..eee619c34 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -5,7 +5,9 @@ <MailboxThread v-else-if="activeAccount" :account="activeAccount" :mailbox="activeMailbox" /> - <NewMessageModal v-if="$store.getters.showMessageComposer" @close="$store.dispatch('closeMessageComposer')" /> + <NewMessageModal + v-if="$store.getters.showMessageComposer" + @close="onCloseModal" /> </Content> </template> @@ -101,6 +103,9 @@ export default { }, }) }, + async onCloseModal(opts) { + await this.$store.dispatch('closeMessageComposer', opts ?? {}) + }, }, } |