From 9074c51aa85427ce8234ef988e75b4e9153bcd1b Mon Sep 17 00:00:00 2001 From: Christoph Wurst <christoph@winzerhof-wurst.at> Date: Tue, 23 Oct 2018 16:46:06 +0200 Subject: [PATCH] Add toggle unseen and delete buttons Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at> --- src/components/Envelope.vue | 25 +++++++++++++++++++++++-- src/service/MessageService.js | 14 ++++++++++++-- src/store.js | 15 ++++++++++++++- webpack.dev.js | 2 +- 4 files changed, 50 insertions(+), 6 deletions(-) diff --git a/src/components/Envelope.vue b/src/components/Envelope.vue index c1666d87f..90d43f0a8 100644 --- a/src/components/Envelope.vue +++ b/src/components/Envelope.vue @@ -92,10 +92,31 @@ export default { popoverMenu() { return [ { - input: 'checkbox', + icon: 'icon-mail', text: t('mail', 'Seen'), - action: () => console.log('CHECK'), + action: () => { + this.menuOpened = false + + this.$store.dispatch('toggleEnvelopeSeen', { + accountId: this.$route.params.accountId, + folderId: this.$route.params.folderId, + id: this.data.id, + }) + }, }, + { + icon: 'icon-delete', + text: t('mail', 'Delete'), + action: () => { + this.menuOpened = false + + this.$store.dispatch('deleteMessage', { + accountId: this.$route.params.accountId, + folderId: this.$route.params.folderId, + id: this.data.id, + }) + } + } ] }, }, diff --git a/src/service/MessageService.js b/src/service/MessageService.js index c8e7e662e..e9f5a7ce5 100644 --- a/src/service/MessageService.js +++ b/src/service/MessageService.js @@ -32,7 +32,7 @@ export function syncEnvelopes(accountId, folderId, syncToken, uids) { } export function setEnvelopeFlag(accountId, folderId, id, flag, value) { - const url = generateUrl('apps/mail/api/accounts/{accountId}/folders/{folderId}/messages/{id}/flags', { + const url = generateUrl('/apps/mail/api/accounts/{accountId}/folders/{folderId}/messages/{id}/flags', { accountId, folderId, id @@ -43,7 +43,7 @@ export function setEnvelopeFlag(accountId, folderId, id, flag, value) { return HttpClient.put(url, { flags: flags - }).then(resp => { flag: value }) + }).then(() => { flag: value }) } export function fetchMessage(accountId, folderId, id) { @@ -55,3 +55,13 @@ export function fetchMessage(accountId, folderId, id) { return HttpClient.get(url).then(resp => resp.data) } + +export function deleteMessage(accountId, folderId, id) { + const url = generateUrl('/apps/mail/api/accounts/{accountId}/folders/{folderId}/messages/{id}', { + accountId, + folderId, + id + }) + + return HttpClient.delete(url).then(resp => resp.data) +} diff --git a/src/store.js b/src/store.js index 18141671f..bfedc2be1 100644 --- a/src/store.js +++ b/src/store.js @@ -12,7 +12,8 @@ import { fetchEnvelopes, syncEnvelopes, setEnvelopeFlag, - fetchMessage + fetchMessage, + deleteMessage, } from './service/MessageService' Vue.use(Vuex) @@ -49,6 +50,9 @@ export const mutations = { }, addMessage (state, {accountId, folderId, message}) { Vue.set(state.messages, accountId + '-' + folderId + '-' + message.id, message) + }, + removeMessage (state, {accountId, folderId, id}) { + Vue.delete(state.messages, accountId + '-' + folderId + '-' + id) } } @@ -200,6 +204,15 @@ export const actions = { }) return message }) + }, + deleteMessage ({commit}, {accountId, folderId, id}) { + return deleteMessage(accountId, folderId, id).then(() => { + commit('removeMessage', { + accountId, + folderId, + id, + }) + }) } } diff --git a/webpack.dev.js b/webpack.dev.js index 88409bbb1..9f66562f9 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -8,5 +8,5 @@ module.exports = merge(common, { noInfo: true, overlay: true }, - devtool: '#eval-source-map', + devtool: '#cheap-source-map', }) -- GitLab