From 61bdf51e900fe8a4554cd52aad1f2aa319fce7e8 Mon Sep 17 00:00:00 2001
From: tamaina <tamaina@hotmail.co.jp>
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

