diff --git a/src/client/app/common/scripts/stream.ts b/src/client/app/common/scripts/stream.ts index e95306183e..98a7efaa4c 100644 --- a/src/client/app/common/scripts/stream.ts +++ b/src/client/app/common/scripts/stream.ts @@ -26,92 +26,6 @@ export default class Stream extends EventEmitter { this.stream.addEventListener('open', this.onOpen); this.stream.addEventListener('close', this.onClose); this.stream.addEventListener('message', this.onMessage); - - if (user) { - const main = this.useSharedConnection('main'); - - // 自分の情報が更新されたとき - main.on('meUpdated', i => { - os.store.dispatch('mergeMe', i); - }); - - main.on('readAllNotifications', () => { - os.store.dispatch('mergeMe', { - hasUnreadNotification: false - }); - }); - - main.on('unreadNotification', () => { - os.store.dispatch('mergeMe', { - hasUnreadNotification: true - }); - }); - - main.on('readAllMessagingMessages', () => { - os.store.dispatch('mergeMe', { - hasUnreadMessagingMessage: false - }); - }); - - main.on('unreadMessagingMessage', () => { - os.store.dispatch('mergeMe', { - hasUnreadMessagingMessage: true - }); - }); - - main.on('unreadMention', () => { - os.store.dispatch('mergeMe', { - hasUnreadMentions: true - }); - }); - - main.on('readAllUnreadMentions', () => { - os.store.dispatch('mergeMe', { - hasUnreadMentions: false - }); - }); - - main.on('unreadSpecifiedNote', () => { - os.store.dispatch('mergeMe', { - hasUnreadSpecifiedNotes: true - }); - }); - - main.on('readAllUnreadSpecifiedNotes', () => { - os.store.dispatch('mergeMe', { - hasUnreadSpecifiedNotes: false - }); - }); - - main.on('clientSettingUpdated', x => { - os.store.commit('settings/set', { - key: x.key, - value: x.value - }); - }); - - main.on('homeUpdated', x => { - os.store.commit('settings/setHome', x); - }); - - main.on('mobileHomeUpdated', x => { - os.store.commit('settings/setMobileHome', x); - }); - - main.on('widgetUpdated', x => { - os.store.commit('settings/setWidget', { - id: x.id, - data: x.data - }); - }); - - // トークンが再生成されたとき - // このままではMisskeyが利用できないので強制的にサインアウトさせる - main.on('myTokenRegenerated', () => { - alert('%i18n:common.my-token-regenerated%'); - os.signout(); - }); - } } public useSharedConnection = (channel: string): SharedConnection => { diff --git a/src/client/app/common/views/components/games/reversi/reversi.vue b/src/client/app/common/views/components/games/reversi/reversi.vue index f2156bc41b..7c9e1b6a5e 100644 --- a/src/client/app/common/views/components/games/reversi/reversi.vue +++ b/src/client/app/common/views/components/games/reversi/reversi.vue @@ -71,8 +71,7 @@ export default Vue.extend({ this.pingClock = setInterval(() => { if (this.matching) { - this.connection.send({ - type: 'ping', + this.connection.send('ping', { id: this.matching.id }); } diff --git a/src/client/app/common/views/widgets/posts-monitor.vue b/src/client/app/common/views/widgets/posts-monitor.vue index 1c70e6dbc4..cb307715d8 100644 --- a/src/client/app/common/views/widgets/posts-monitor.vue +++ b/src/client/app/common/views/widgets/posts-monitor.vue @@ -113,8 +113,7 @@ export default define({ this.connection.on('stats', this.onStats); this.connection.on('statsLog', this.onStatsLog); - this.connection.send({ - type: 'requestLog', + this.connection.send('requestLog',{ id: Math.random().toString() }); }, diff --git a/src/client/app/common/views/widgets/server.cpu-memory.vue b/src/client/app/common/views/widgets/server.cpu-memory.vue index 55aa1ea895..119a77af83 100644 --- a/src/client/app/common/views/widgets/server.cpu-memory.vue +++ b/src/client/app/common/views/widgets/server.cpu-memory.vue @@ -91,8 +91,7 @@ export default Vue.extend({ mounted() { this.connection.on('stats', this.onStats); this.connection.on('statsLog', this.onStatsLog); - this.connection.send({ - type: 'requestLog', + this.connection.send('requestLog', { id: Math.random().toString() }); }, diff --git a/src/client/app/desktop/views/components/notifications.vue b/src/client/app/desktop/views/components/notifications.vue index 95b8e1355a..a572f43adc 100644 --- a/src/client/app/desktop/views/components/notifications.vue +++ b/src/client/app/desktop/views/components/notifications.vue @@ -181,8 +181,7 @@ export default Vue.extend({ onNotification(notification) { // TODO: ユーザーが画面を見てないと思われるとき(ブラウザやタブがアクティブじゃないなど)は送信しない - this.connection.send({ - type: 'readNotification', + (this as any).os.stream.send('readNotification', { id: notification.id }); diff --git a/src/client/app/desktop/views/pages/admin/admin.cpu-memory.vue b/src/client/app/desktop/views/pages/admin/admin.cpu-memory.vue index 63b24cea47..0f486df2d9 100644 --- a/src/client/app/desktop/views/pages/admin/admin.cpu-memory.vue +++ b/src/client/app/desktop/views/pages/admin/admin.cpu-memory.vue @@ -77,8 +77,7 @@ export default Vue.extend({ mounted() { this.connection.on('stats', this.onStats); this.connection.on('statsLog', this.onStatsLog); - this.connection.send({ - type: 'requestLog', + this.connection.send('requestLog', { id: Math.random().toString(), length: 200 }); diff --git a/src/client/app/desktop/views/pages/deck/deck.notifications.vue b/src/client/app/desktop/views/pages/deck/deck.notifications.vue index 29de691fe2..b68757b73f 100644 --- a/src/client/app/desktop/views/pages/deck/deck.notifications.vue +++ b/src/client/app/desktop/views/pages/deck/deck.notifications.vue @@ -113,8 +113,7 @@ export default Vue.extend({ onNotification(notification) { // TODO: ユーザーが画面を見てないと思われるとき(ブラウザやタブがアクティブじゃないなど)は送信しない - this.connection.send({ - type: 'readNotification', + (this as any).os.stream.send('readNotification', { id: notification.id }); diff --git a/src/client/app/mios.ts b/src/client/app/mios.ts index 42171e71fa..558c53dcf1 100644 --- a/src/client/app/mios.ts +++ b/src/client/app/mios.ts @@ -212,7 +212,7 @@ export default class MiOS extends EventEmitter { const fetched = () => { this.emit('signedin'); - this.stream = new Stream(this); + this.initStream(); // Finish init callback(); @@ -247,12 +247,103 @@ export default class MiOS extends EventEmitter { // Finish init callback(); - this.stream = new Stream(this); + this.initStream(); } }); } } + @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('readAllMessagingMessages', () => { + this.store.dispatch('mergeMe', { + hasUnreadMessagingMessage: false + }); + }); + + main.on('unreadMessagingMessage', () => { + this.store.dispatch('mergeMe', { + hasUnreadMessagingMessage: 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('clientSettingUpdated', x => { + this.store.commit('settings/set', { + key: x.key, + value: x.value + }); + }); + + main.on('homeUpdated', x => { + this.store.commit('settings/setHome', x); + }); + + main.on('mobileHomeUpdated', x => { + this.store.commit('settings/setMobileHome', x); + }); + + main.on('widgetUpdated', x => { + this.store.commit('settings/setWidget', { + id: x.id, + data: x.data + }); + }); + + // トークンが再生成されたとき + // このままではMisskeyが利用できないので強制的にサインアウトさせる + main.on('myTokenRegenerated', () => { + alert('%i18n:common.my-token-regenerated%'); + this.signout(); + }); + } + } + /** * Register service worker */ diff --git a/src/client/app/mobile/views/components/notifications.vue b/src/client/app/mobile/views/components/notifications.vue index e43ec41a37..1cdcad1e4a 100644 --- a/src/client/app/mobile/views/components/notifications.vue +++ b/src/client/app/mobile/views/components/notifications.vue @@ -98,8 +98,7 @@ export default Vue.extend({ onNotification(notification) { // TODO: ユーザーが画面を見てないと思われるとき(ブラウザやタブがアクティブじゃないなど)は送信しない - this.connection.send({ - type: 'readNotification', + (this as any).os.stream.send('readNotification', { id: notification.id }); diff --git a/src/client/app/mobile/views/components/ui.vue b/src/client/app/mobile/views/components/ui.vue index b16c246b10..6f77f44454 100644 --- a/src/client/app/mobile/views/components/ui.vue +++ b/src/client/app/mobile/views/components/ui.vue @@ -58,8 +58,7 @@ export default Vue.extend({ methods: { onNotification(notification) { // TODO: ユーザーが画面を見てないと思われるとき(ブラウザやタブがアクティブじゃないなど)は送信しない - this.connection.send({ - type: 'readNotification', + (this as any).os.stream.send('readNotification', { id: notification.id });