From 9cff3868deaa35e5433bc39a392f8fd6d3e5a89e Mon Sep 17 00:00:00 2001
From: syuilo <syuilotan@yahoo.co.jp>
Date: Sun, 4 Mar 2018 18:50:30 +0900
Subject: [PATCH] make sounds great again

---
 src/web/app/common/mios.ts                       |   7 +++++++
 .../common/views/components/messaging-room.vue   |   6 ++++++
 .../app/desktop/views/components/settings.vue    |  11 +++++++++++
 .../app/desktop/views/components/timeline.vue    |   6 ++++++
 src/web/assets/message.mp3                       | Bin 0 -> 4584 bytes
 src/web/assets/post.mp3                          | Bin 0 -> 2506 bytes
 6 files changed, 30 insertions(+)
 create mode 100644 src/web/assets/message.mp3
 create mode 100644 src/web/assets/post.mp3

diff --git a/src/web/app/common/mios.ts b/src/web/app/common/mios.ts
index bc83ec0bbb..c5f0d1d4dc 100644
--- a/src/web/app/common/mios.ts
+++ b/src/web/app/common/mios.ts
@@ -94,6 +94,13 @@ export default class MiOS extends EventEmitter {
 		return localStorage.getItem('debug') == 'true';
 	}
 
+	/**
+	 * Whether enable sounds
+	 */
+	public get isEnableSounds() {
+		return localStorage.getItem('enableSounds') == 'true';
+	}
+
 	public apis: API;
 
 	/**
diff --git a/src/web/app/common/views/components/messaging-room.vue b/src/web/app/common/views/components/messaging-room.vue
index 0a675ba03e..e15e10ec7d 100644
--- a/src/web/app/common/views/components/messaging-room.vue
+++ b/src/web/app/common/views/components/messaging-room.vue
@@ -29,6 +29,7 @@ import Vue from 'vue';
 import MessagingStreamConnection from '../../scripts/streaming/messaging-stream';
 import XMessage from './messaging-room.message.vue';
 import XForm from './messaging-room.form.vue';
+import { url } from '../../../config';
 
 export default Vue.extend({
 	components: {
@@ -147,6 +148,11 @@ export default Vue.extend({
 		},
 
 		onMessage(message) {
+			// サウンドを再生する
+			if ((this as any).os.isEnableSounds) {
+				new Audio(`${url}/assets/message.mp3`).play();
+			}
+
 			const isBottom = this.isBottom();
 
 			this.messages.push(message);
diff --git a/src/web/app/desktop/views/components/settings.vue b/src/web/app/desktop/views/components/settings.vue
index cba14f5f95..a0ffc4e0aa 100644
--- a/src/web/app/desktop/views/components/settings.vue
+++ b/src/web/app/desktop/views/components/settings.vue
@@ -26,6 +26,13 @@
 			<mk-switch v-model="os.i.client_settings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="タイムライン上部に投稿フォームを表示する"/>
 		</section>
 
+		<section class="web" v-show="page == 'web'">
+			<h1>サウンド</h1>
+			<mk-switch v-model="enableSounds" text="サウンドを有効にする">
+				<span>投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。</span>
+			</mk-switch>
+		</section>
+
 		<section class="web" v-show="page == 'web'">
 			<h1>モバイル</h1>
 			<mk-switch v-model="os.i.client_settings.disableViaMobile" @change="onChangeDisableViaMobile" text="「モバイルからの投稿」フラグを付けない"/>
@@ -166,6 +173,7 @@ export default Vue.extend({
 			version,
 			latestVersion: undefined,
 			checkingForUpdate: false,
+			enableSounds: localStorage.getItem('enableSounds') == 'true',
 			lang: localStorage.getItem('lang') || '',
 			preventUpdate: localStorage.getItem('preventUpdate') == 'true',
 			debug: localStorage.getItem('debug') == 'true',
@@ -173,6 +181,9 @@ export default Vue.extend({
 		};
 	},
 	watch: {
+		enableSounds() {
+			localStorage.setItem('enableSounds', this.enableSounds ? 'true' : 'false');
+		},
 		lang() {
 			localStorage.setItem('lang', this.lang);
 		},
diff --git a/src/web/app/desktop/views/components/timeline.vue b/src/web/app/desktop/views/components/timeline.vue
index 0d16d60df9..c35baa159e 100644
--- a/src/web/app/desktop/views/components/timeline.vue
+++ b/src/web/app/desktop/views/components/timeline.vue
@@ -18,6 +18,7 @@
 
 <script lang="ts">
 import Vue from 'vue';
+import { url } from '../../../config';
 
 export default Vue.extend({
 	data() {
@@ -93,6 +94,11 @@ export default Vue.extend({
 			});
 		},
 		onPost(post) {
+			// サウンドを再生する
+			if ((this as any).os.isEnableSounds) {
+				new Audio(`${url}/assets/post.mp3`).play();
+			}
+
 			this.posts.unshift(post);
 		},
 		onChangeFollowing() {
diff --git a/src/web/assets/message.mp3 b/src/web/assets/message.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..64277444759d7d0be1c34574a2f13ca4a84a6e8b
GIT binary patch
literal 4584
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

literal 0
HcmV?d00001

diff --git a/src/web/assets/post.mp3 b/src/web/assets/post.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..d3da88a933265ea66d24f31db01dbad15b92d932
GIT binary patch
literal 2506
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

literal 0
HcmV?d00001