From e2a9a0ff3d00800b5910cd57f4551d8c595a059d Mon Sep 17 00:00:00 2001
From: syuilo <syuilotan@yahoo.co.jp>
Date: Tue, 3 Nov 2020 15:59:13 +0900
Subject: [PATCH] Refactoring

---
 src/client/ui/_common_/common.vue | 24 +++++++++++++++++++++++-
 src/client/ui/deck.vue            | 23 -----------------------
 src/client/ui/default.vue         | 21 ---------------------
 src/client/ui/zen.vue             | 21 ---------------------
 4 files changed, 23 insertions(+), 66 deletions(-)

diff --git a/src/client/ui/_common_/common.vue b/src/client/ui/_common_/common.vue
index dea3e30a9..d06cbb986 100644
--- a/src/client/ui/_common_/common.vue
+++ b/src/client/ui/_common_/common.vue
@@ -15,7 +15,8 @@
 
 <script lang="ts">
 import { defineAsyncComponent, defineComponent } from 'vue';
-import { popups, uploads, pendingApiRequestsCount } from '@/os';
+import { stream, sound, popup, popups, uploads, pendingApiRequestsCount } from '@/os';
+import { store } from '@/store';
 
 export default defineComponent({
 	components: {
@@ -24,6 +25,27 @@ export default defineComponent({
 	},
 
 	setup() {
+		const onNotification = notification => {
+			if (store.state.i.mutingNotificationTypes.includes(notification.type)) return;
+
+			if (document.visibilityState === 'visible') {
+				stream.send('readNotification', {
+					id: notification.id
+				});
+
+				popup(import('@/components/toast.vue'), {
+					notification
+				}, {}, 'closed');
+			}
+
+			sound('notification');
+		};
+
+		if (store.getters.isSignedIn) {
+			const connection = stream.useSharedConnection('main', 'UI');
+			connection.on('notification', onNotification);
+		}
+
 		return {
 			uploads,
 			popups,
diff --git a/src/client/ui/deck.vue b/src/client/ui/deck.vue
index ff1daa58a..ad65ccd49 100644
--- a/src/client/ui/deck.vue
+++ b/src/client/ui/deck.vue
@@ -63,7 +63,6 @@ export default defineComponent({
 			host: host,
 			pageInfo: null,
 			pageKey: 0,
-			connection: null,
 			menuDef: sidebarDef,
 			wallpaper: localStorage.getItem('wallpaper') != null,
 			faPlus, faPencilAlt, faChevronLeft, faBars, faCircle
@@ -107,11 +106,6 @@ export default defineComponent({
 		document.documentElement.style.overflowY = 'hidden';
 		document.documentElement.style.scrollBehavior = 'auto';
 		window.addEventListener('wheel', this.onWheel);
-
-		if (this.$store.getters.isSignedIn) {
-			this.connection = os.stream.useSharedConnection('main', 'UI');
-			this.connection.on('notification', this.onNotification);
-		}
 	},
 
 	mounted() {
@@ -143,23 +137,6 @@ export default defineComponent({
 			os.post();
 		},
 
-		onNotification(notification) {
-			if (this.$store.state.i.mutingNotificationTypes.includes(notification.type)) {
-				return;
-			}
-
-			if (document.visibilityState === 'visible') {
-				os.stream.send('readNotification', {
-					id: notification.id
-				});
-
-				os.popup(import('@/components/toast.vue'), {
-					notification
-				}, {}, 'closed');
-			}
-			os.sound('notification');
-		},
-
 		async addColumn(ev) {
 			const columns = [
 				'widgets',
diff --git a/src/client/ui/default.vue b/src/client/ui/default.vue
index 2c9d84267..0073a0c8c 100644
--- a/src/client/ui/default.vue
+++ b/src/client/ui/default.vue
@@ -91,7 +91,6 @@ export default defineComponent({
 			host: host,
 			pageKey: 0,
 			pageInfo: null,
-			connection: null,
 			isDesktop: window.innerWidth >= DESKTOP_THRESHOLD,
 			menuDef: sidebarDef,
 			navHidden: false,
@@ -141,9 +140,6 @@ export default defineComponent({
 	created() {
 		document.documentElement.style.overflowY = 'scroll';
 
-		this.connection = os.stream.useSharedConnection('main', 'UI');
-		this.connection.on('notification', this.onNotification);
-
 		if (this.$store.state.deviceUser.widgets.length === 0) {
 			this.$store.commit('deviceUser/setWidgets', [{
 				name: 'calendar',
@@ -234,23 +230,6 @@ export default defineComponent({
 				}
 			}], e);
 		},
-
-		onNotification(notification) {
-			if (this.$store.state.i.mutingNotificationTypes.includes(notification.type)) {
-				return;
-			}
-			if (document.visibilityState === 'visible') {
-				os.stream.send('readNotification', {
-					id: notification.id
-				});
-
-				os.popup(import('@/components/toast.vue'), {
-					notification
-				}, {}, 'closed');
-			}
-
-			os.sound('notification');
-		},
 	}
 });
 </script>
diff --git a/src/client/ui/zen.vue b/src/client/ui/zen.vue
index e3aa077bd..e76b74d4b 100644
--- a/src/client/ui/zen.vue
+++ b/src/client/ui/zen.vue
@@ -42,7 +42,6 @@ export default defineComponent({
 			host: host,
 			pageKey: 0,
 			pageInfo: null,
-			connection: null,
 			faLayerGroup, faBars, faBell, faHome, faCircle,
 		};
 	},
@@ -70,9 +69,6 @@ export default defineComponent({
 
 	created() {
 		document.documentElement.style.overflowY = 'scroll';
-
-		this.connection = os.stream.useSharedConnection('main', 'UI');
-		this.connection.on('notification', this.onNotification);
 	},
 
 	methods: {
@@ -94,23 +90,6 @@ export default defineComponent({
 		onTransition() {
 			if (window._scroll) window._scroll();
 		},
-
-		onNotification(notification) {
-			if (this.$store.state.i.mutingNotificationTypes.includes(notification.type)) {
-				return;
-			}
-			if (document.visibilityState === 'visible') {
-				os.stream.send('readNotification', {
-					id: notification.id
-				});
-
-				os.popup(import('@/components/toast.vue'), {
-					notification
-				}, {}, 'closed');
-			}
-
-			os.sound('notification');
-		},
 	}
 });
 </script>