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}) +}