diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2020-02-20 06:08:49 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2020-02-20 06:08:49 +0900 |
| commit | b8e7df198d5eabbf8c0d82f4aee86a38168d8d71 (patch) | |
| tree | 922f2872df0da14557bb0af1b04ceeb99255c2e0 /src/client/init.ts | |
| parent | 12.17.0 (diff) | |
| download | misskey-b8e7df198d5eabbf8c0d82f4aee86a38168d8d71.tar.gz misskey-b8e7df198d5eabbf8c0d82f4aee86a38168d8d71.tar.bz2 misskey-b8e7df198d5eabbf8c0d82f4aee86a38168d8d71.zip | |
Improve sound
Diffstat (limited to 'src/client/init.ts')
| -rw-r--r-- | src/client/init.ts | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/src/client/init.ts b/src/client/init.ts index 69f071ddcf..d333a1289f 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(); + }); + } }); |