From b8e7df198d5eabbf8c0d82f4aee86a38168d8d71 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 20 Feb 2020 06:08:49 +0900 Subject: [PATCH] Improve sound --- locales/ja-JP.yml | 1 + src/client/app.vue | 4 +- src/client/assets/sounds/syuilo/popo.mp3 | Bin 0 -> 18240 bytes src/client/assets/sounds/syuilo/triple.mp3 | Bin 0 -> 18240 bytes src/client/components/timeline.vue | 6 +- src/client/init.ts | 99 +++++++++++++++++++++ src/client/mios.ts | 94 +------------------ src/client/pages/messaging-room.vue | 5 +- src/client/pages/preferences/index.vue | 12 +++ src/client/store.ts | 1 + 10 files changed, 117 insertions(+), 105 deletions(-) create mode 100644 src/client/assets/sounds/syuilo/popo.mp3 create mode 100644 src/client/assets/sounds/syuilo/triple.mp3 diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index d09a769a3..da255351e 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -437,6 +437,7 @@ _sfx: notification: "通知" chat: "チャット" chatBg: "チャット(バックグラウンド)" + antenna: "アンテナ受信" _ago: unknown: "謎" diff --git a/src/client/app.vue b/src/client/app.vue index 34e2dbf7f..7f97b6cf4 100644 --- a/src/client/app.vue +++ b/src/client/app.vue @@ -565,9 +565,7 @@ export default Vue.extend({ }); } - const audio = new Audio(`/assets/sounds/${this.$store.state.device.sfxNotification}.mp3`); - audio.volume = this.$store.state.device.sfxVolume; - audio.play(); + this.$root.sound('notification'); }, onMousedown(e) { diff --git a/src/client/assets/sounds/syuilo/popo.mp3 b/src/client/assets/sounds/syuilo/popo.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a2a1605bbb49142e9637b4b79493c80358661a45 GIT binary patch literal 18240 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 literal 0 HcmV?d00001 diff --git a/src/client/assets/sounds/syuilo/triple.mp3 b/src/client/assets/sounds/syuilo/triple.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..54ab974d469c0f94361c278d86532a44479b9bb6 GIT binary patch literal 18240 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 ca+e_sUe;65SCV!Oe?SHPFS{5+L;wH) literal 0 HcmV?d00001 diff --git a/src/client/components/timeline.vue b/src/client/components/timeline.vue index 6befd7c2a..234ed6b07 100644 --- a/src/client/components/timeline.vue +++ b/src/client/components/timeline.vue @@ -53,11 +53,7 @@ export default Vue.extend({ (this.$refs.tl as any).prepend(note); if (this.sound) { - const audio = new Audio(note.userId === this.$store.state.i.id - ? `/assets/sounds/${this.$store.state.device.sfxNoteMy}.mp3` - : `/assets/sounds/${this.$store.state.device.sfxNote}.mp3`); - audio.volume = this.$store.state.device.sfxVolume; - audio.play(); + this.$root.sound(note.userId === this.$store.state.i.id ? 'noteMy' : 'note'); } }; diff --git a/src/client/init.ts b/src/client/init.ts index 69f071ddc..d333a1289 100644 --- a/src/client/init.ts +++ b/src/client/init.ts @@ -189,6 +189,13 @@ os.init(async () => { if (cb) vm.$once('closed', cb); (vm as any).focus(); }, + sound(type: string) { + const sound = this.$store.state.device['sfx' + type.substr(0, 1).toUpperCase() + type.substr(1)]; + if (sound == null) return; + const audio = new Audio(`/assets/sounds/${sound}.mp3`); + audio.volume = this.$store.state.device.sfxVolume; + audio.play(); + } }, router: router, render: createEl => createEl(App) @@ -198,4 +205,96 @@ os.init(async () => { // マウント app.$mount('#app'); + + if (app.$store.getters.isSignedIn) { + const main = os.stream.useSharedConnection('main'); + + // 自分の情報が更新されたとき + main.on('meUpdated', i => { + app.$store.dispatch('mergeMe', i); + }); + + main.on('readAllNotifications', () => { + app.$store.dispatch('mergeMe', { + hasUnreadNotification: false + }); + }); + + main.on('unreadNotification', () => { + app.$store.dispatch('mergeMe', { + hasUnreadNotification: true + }); + }); + + main.on('unreadMention', () => { + app.$store.dispatch('mergeMe', { + hasUnreadMentions: true + }); + }); + + main.on('readAllUnreadMentions', () => { + app.$store.dispatch('mergeMe', { + hasUnreadMentions: false + }); + }); + + main.on('unreadSpecifiedNote', () => { + app.$store.dispatch('mergeMe', { + hasUnreadSpecifiedNotes: true + }); + }); + + main.on('readAllUnreadSpecifiedNotes', () => { + app.$store.dispatch('mergeMe', { + hasUnreadSpecifiedNotes: false + }); + }); + + main.on('readAllMessagingMessages', () => { + app.$store.dispatch('mergeMe', { + hasUnreadMessagingMessage: false + }); + }); + + main.on('unreadMessagingMessage', () => { + app.$store.dispatch('mergeMe', { + hasUnreadMessagingMessage: true + }); + + app.sound('chatBg'); + }); + + main.on('readAllAntennas', () => { + app.$store.dispatch('mergeMe', { + hasUnreadAntenna: false + }); + }); + + main.on('unreadAntenna', () => { + app.$store.dispatch('mergeMe', { + hasUnreadAntenna: true + }); + + app.sound('antenna'); + }); + + main.on('readAllAnnouncements', () => { + app.$store.dispatch('mergeMe', { + hasUnreadAnnouncement: false + }); + }); + + main.on('clientSettingUpdated', x => { + app.$store.commit('settings/set', { + key: x.key, + value: x.value + }); + }); + + // トークンが再生成されたとき + // このままではMisskeyが利用できないので強制的にサインアウトさせる + main.on('myTokenRegenerated', () => { + os.signout(); + }); + } }); diff --git a/src/client/mios.ts b/src/client/mios.ts index e0eb99769..a29dcd855 100644 --- a/src/client/mios.ts +++ b/src/client/mios.ts @@ -3,7 +3,7 @@ import Vue from 'vue'; import { EventEmitter } from 'eventemitter3'; import initStore from './store'; -import { apiUrl, version, locale } from './config'; +import { apiUrl, version } from './config'; import Progress from './scripts/loading'; import Stream from './scripts/stream'; @@ -142,98 +142,6 @@ export default class MiOS extends EventEmitter { @autobind private initStream() { this.stream = new Stream(this); - - if (this.store.getters.isSignedIn) { - const main = this.stream.useSharedConnection('main'); - - // 自分の情報が更新されたとき - main.on('meUpdated', i => { - this.store.dispatch('mergeMe', i); - }); - - main.on('readAllNotifications', () => { - this.store.dispatch('mergeMe', { - hasUnreadNotification: false - }); - }); - - main.on('unreadNotification', () => { - this.store.dispatch('mergeMe', { - hasUnreadNotification: true - }); - }); - - main.on('unreadMention', () => { - this.store.dispatch('mergeMe', { - hasUnreadMentions: true - }); - }); - - main.on('readAllUnreadMentions', () => { - this.store.dispatch('mergeMe', { - hasUnreadMentions: false - }); - }); - - main.on('unreadSpecifiedNote', () => { - this.store.dispatch('mergeMe', { - hasUnreadSpecifiedNotes: true - }); - }); - - main.on('readAllUnreadSpecifiedNotes', () => { - this.store.dispatch('mergeMe', { - hasUnreadSpecifiedNotes: false - }); - }); - - main.on('readAllMessagingMessages', () => { - this.store.dispatch('mergeMe', { - hasUnreadMessagingMessage: false - }); - }); - - main.on('unreadMessagingMessage', () => { - this.store.dispatch('mergeMe', { - hasUnreadMessagingMessage: true - }); - - const audio = new Audio(`/assets/sounds/${this.store.state.device.sfxChatBg}.mp3`); - audio.volume = this.store.state.device.sfxVolume; - audio.play(); - }); - - main.on('readAllAntennas', () => { - this.store.dispatch('mergeMe', { - hasUnreadAntenna: false - }); - }); - - main.on('unreadAntenna', () => { - this.store.dispatch('mergeMe', { - hasUnreadAntenna: true - }); - }); - - main.on('readAllAnnouncements', () => { - this.store.dispatch('mergeMe', { - hasUnreadAnnouncement: false - }); - }); - - main.on('clientSettingUpdated', x => { - this.store.commit('settings/set', { - key: x.key, - value: x.value - }); - }); - - // トークンが再生成されたとき - // このままではMisskeyが利用できないので強制的にサインアウトさせる - main.on('myTokenRegenerated', () => { - this.signout(); - }); - } } /** diff --git a/src/client/pages/messaging-room.vue b/src/client/pages/messaging-room.vue index aa0c4c93b..7f7e77fc1 100644 --- a/src/client/pages/messaging-room.vue +++ b/src/client/pages/messaging-room.vue @@ -184,10 +184,7 @@ export default Vue.extend({ }, onMessage(message) { - // サウンドを再生する - const audio = new Audio(`/assets/sounds/${this.$store.state.device.sfxChat}.mp3`); - audio.volume = this.$store.state.device.sfxVolume; - audio.play(); + this.$root.sound('chat'); const isBottom = this.isBottom(); diff --git a/src/client/pages/preferences/index.vue b/src/client/pages/preferences/index.vue index 9d57ddad5..34dcbd825 100644 --- a/src/client/pages/preferences/index.vue +++ b/src/client/pages/preferences/index.vue @@ -37,6 +37,11 @@ + + + + + @@ -97,6 +102,8 @@ const sounds = [ 'syuilo/pope1', 'syuilo/pope2', 'syuilo/waon', + 'syuilo/popo', + 'syuilo/triple', 'aisha/1', 'aisha/2', 'aisha/3', @@ -196,6 +203,11 @@ export default Vue.extend({ get() { return this.$store.state.device.sfxChatBg; }, set(value) { this.$store.commit('device/set', { key: 'sfxChatBg', value }); } }, + + sfxAntenna: { + get() { return this.$store.state.device.sfxAntenna; }, + set(value) { this.$store.commit('device/set', { key: 'sfxAntenna', value }); } + }, }, watch: { diff --git a/src/client/store.ts b/src/client/store.ts index 1a26bc82d..3064cfdec 100644 --- a/src/client/store.ts +++ b/src/client/store.ts @@ -47,6 +47,7 @@ const defaultDeviceSettings = { sfxNotification: 'syuilo/pope2', sfxChat: 'syuilo/pope1', sfxChatBg: 'syuilo/waon', + sfxAntenna: 'syuilo/triple', userData: {}, };