diff --git a/package-lock.json b/package-lock.json
index ef720a7980..1f67a8c3ad 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3825,9 +3825,9 @@
"integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw=="
},
"@types/semver": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-6.2.0.tgz",
- "integrity": "sha512-1OzrNb4RuAzIT7wHSsgZRlMBlNsJl+do6UblR7JMW4oB7bbR+uBEYtUh7gEc/jM84GGilh68lSOokyM/zNUlBA=="
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-6.2.1.tgz",
+ "integrity": "sha512-+beqKQOh9PYxuHvijhVl+tIHvT6tuwOrE9m14zd+MT2A38KoKZhh7pYJ0SNleLtwDsiIxHDsIk9bv01oOxvSvA=="
},
"@vue/babel-helper-vue-jsx-merge-props": {
"version": "1.0.0",
diff --git a/package.json b/package.json
index 77d7fc56af..acaa918378 100644
--- a/package.json
+++ b/package.json
@@ -32,6 +32,7 @@
"@nextcloud/auth": "^1.2.1",
"@nextcloud/axios": "^1.3.1",
"@nextcloud/dialogs": "^1.0.0",
+ "@nextcloud/event-bus": "^1.1.2",
"@nextcloud/files": "^1.0.0",
"@nextcloud/initial-state": "^1.1.0",
"@nextcloud/l10n": "^1.0.1",
diff --git a/src/App.vue b/src/App.vue
index 8ded884886..6a4aca2290 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -25,14 +25,18 @@
diff --git a/src/components/Composer.vue b/src/components/Composer.vue
index 3738ec3e5e..393008300b 100644
--- a/src/components/Composer.vue
+++ b/src/components/Composer.vue
@@ -199,6 +199,7 @@ import {htmlToText, textToSimpleHtml} from '../util/HtmlHelper'
import Loading from './Loading'
import logger from '../logger'
import TextEditor from './TextEditor'
+import {emit} from '@nextcloud/event-bus'
const debouncedSearch = debouncePromise(findRecipient, 500)
@@ -421,7 +422,10 @@ export default {
.then(this.getMessageData())
.then(data => this.send(data))
.then(() => logger.info('message sent'))
- .then(() => (this.state = STATES.FINISHED))
+ .then(() => {
+ emit('mail:interaction', {type: 'message-sent', recipient: this.selectedUser.user})
+ this.state = STATES.FINISHED
+ })
.catch(error => {
logger.error('could not send message', {error})
if (error && error.toString) {
diff --git a/src/components/Envelope.vue b/src/components/Envelope.vue
index f191da7d88..e1acfb12ab 100644
--- a/src/components/Envelope.vue
+++ b/src/components/Envelope.vue
@@ -43,6 +43,7 @@ import Moment from './Moment'
import Avatar from './Avatar'
import {calculateAccountColor} from '../util/AccountColor'
+import {emit} from '@nextcloud/event-bus'
export default {
name: 'Envelope',
@@ -125,8 +126,15 @@ export default {
},
},
methods: {
- onToggleFlagged() {
- this.$store.dispatch('toggleEnvelopeFlagged', this.data)
+ async onToggleFlagged() {
+ await this.$store.dispatch('toggleEnvelopeFlagged', this.data)
+
+ if (this.data.flags.flagged) {
+ emit('mail:interaction', {
+ type: 'message-starred',
+ sender: this.data.from,
+ })
+ }
},
onToggleSeen() {
this.$store.dispatch('toggleEnvelopeSeen', this.data)
diff --git a/src/components/Message.vue b/src/components/Message.vue
index 886d31fcf4..675e14869a 100644
--- a/src/components/Message.vue
+++ b/src/components/Message.vue
@@ -81,6 +81,7 @@ import MessagePlainTextBody from './MessagePlainTextBody'
import Loading from './Loading'
import Logger from '../logger'
import MessageAttachments from './MessageAttachments'
+import {emit} from '@nextcloud/event-bus'
export default {
name: 'Message',
@@ -231,7 +232,12 @@ export default {
})
},
onToggleSeen() {
- this.$store.dispatch('toggleEnvelopeSeen', this.envelope)
+ this.$store.dispatch('toggleEnvelopeSeen', this.envelope).then(() => {
+ emit('mail:interaction', {
+ type: 'message-read',
+ recipient: this.selectedUser.user,
+ })
+ })
},
onDelete(e) {
// Don't try to navigate to the deleted message
@@ -251,7 +257,12 @@ export default {
}
this.$emit('delete', this.envelope)
- this.$store.dispatch('deleteMessage', this.envelope)
+ this.$store.dispatch('deleteMessage', this.envelope).then(() => {
+ emit('mail:interaction', {
+ type: 'message-delete',
+ recipient: this.selectedUser.user,
+ })
+ })
if (!next) {
Logger.debug('no next/previous envelope, not navigating')
diff --git a/src/service/ContactsInteraction.js b/src/service/ContactsInteraction.js
new file mode 100644
index 0000000000..6aec637c8d
--- /dev/null
+++ b/src/service/ContactsInteraction.js
@@ -0,0 +1,26 @@
+/*
+ * @copyright 2020 Christoph Wurst
+ *
+ * @author 2020 Christoph Wurst
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+import logger from '../logger'
+
+export const collect = data => {
+ logger.info('collecting user interaction data', {data})
+}