From 61bdf51e900fe8a4554cd52aad1f2aa319fce7e8 Mon Sep 17 00:00:00 2001 From: tamaina Date: Tue, 26 May 2020 14:34:49 +0900 Subject: Observe notification read --- src/client/components/notification.vue | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/client/components/notification.vue') diff --git a/src/client/components/notification.vue b/src/client/components/notification.vue index de233d14ac..d0c85b6e2e 100644 --- a/src/client/components/notification.vue +++ b/src/client/components/notification.vue @@ -90,9 +90,25 @@ export default Vue.extend({ getNoteSummary: (text: string) => noteSummary(text, this.$root.i18n.messages[this.$root.i18n.locale]), followRequestDone: false, groupInviteDone: false, + readObserver: new IntersectionObserver((entries, observer) => { + if (!entries.some(entry => entry.isIntersecting)) return; + this.$root.stream.send('readNotification', { + id: this.notification.id + }); + entries.map(({ target }) => observer.unobserve(target)); + }), faIdCardAlt, faPlus, faQuoteLeft, faQuoteRight, faRetweet, faReply, faAt, faClock, faCheck, faPollH }; }, + + mounted() { + if (!this.notification.isRead) this.readObserver.observe(this.$el); + }, + + beforeDestroy() { + if (!this.notification.isRead) this.readObserver.unobserve(this.$el); + }, + methods: { acceptFollowRequest() { this.followRequestDone = true; -- cgit v1.2.3-freya