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