From 968039b5aef55602fcd977d83e6f7a301aad8e9b Mon Sep 17 00:00:00 2001 From: AkiraFukushima Date: Sun, 4 Nov 2018 01:37:30 +0900 Subject: [PATCH] refs #662 Update direct messages with streaming --- src/main/index.js | 30 +++++++++++------------ src/renderer/components/TimelineSpace.vue | 4 +++ src/renderer/store/TimelineSpace.js | 24 ++++++++++++++++++ 3 files changed, 43 insertions(+), 15 deletions(-) diff --git a/src/main/index.js b/src/main/index.js index 61527049..d4f584fc 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -421,40 +421,40 @@ ipcMain.on('stop-user-streaming', (event, _) => { } }) -let directMessageStreaming = null +let directMessagesStreaming = null -ipcMain.on('start-directmessage-streaming', (event, ac) => { +ipcMain.on('start-directmessages-streaming', (event, ac) => { accountManager.getAccount(ac._id) .catch((err) => { log.error(err) - event.sender.send('error-start-directmessage-streaming', err) + event.sender.send('error-start-directmessages-streaming', err) }) .then((account) => { - // Stop old directmessage streaming - if (directMessageStreaming !== null) { - directMessageStreaming.stop() - directMessageStreaming = null + // Stop old directmessages streaming + if (directMessagesStreaming !== null) { + directMessagesStreaming.stop() + directMessagesStreaming = null } - directMessageStreaming = new StreamingManager(account) - directMessageStreaming.start( + directMessagesStreaming = new StreamingManager(account) + directMessagesStreaming.start( 'direct', null, (update) => { - event.sender.send('update-start-directmessage-streaming', update) + event.sender.send('update-start-directmessages-streaming', update) }, (err) => { log.error(err) - event.sender.send('error-start-directmessage-streaming', err) + event.sender.send('error-start-directmessages-streaming', err) } ) }) }) -ipcMain.on('stop-directmessage-streaming', (event, _) => { - if (directMessageStreaming !== null) { - directMessageStreaming.stop() - directMessageStreaming = null +ipcMain.on('stop-directmessages-streaming', (event, _) => { + if (directMessagesStreaming !== null) { + directMessagesStreaming.stop() + directMessagesStreaming = null } }) diff --git a/src/renderer/components/TimelineSpace.vue b/src/renderer/components/TimelineSpace.vue index b59df5cb..03e42da9 100644 --- a/src/renderer/components/TimelineSpace.vue +++ b/src/renderer/components/TimelineSpace.vue @@ -74,6 +74,8 @@ export default { window.removeEventListener('drop', this.handleDrop) this.$store.dispatch('TimelineSpace/stopUserStreaming') this.$store.dispatch('TimelineSpace/unbindUserStreaming') + this.$store.dispatch('TimelineSpace/stopDirectMessagesStreaming') + this.$store.dispatch('TimelineSpace/unbindDirectMessagesStreaming') this.$store.dispatch('TimelineSpace/stopLocalStreaming') this.$store.dispatch('TimelineSpace/unbindLocalStreaming') }, @@ -134,6 +136,8 @@ export default { }) this.$store.dispatch('TimelineSpace/bindLocalStreaming', account) this.$store.dispatch('TimelineSpace/startLocalStreaming', account) + this.$store.dispatch('TimelineSpace/bindDirectMessagesStreaming', account) + this.$store.dispatch('TimelineSpace/startDirectMessagesStreaming', account) this.$store.dispatch('TimelineSpace/fetchEmojis', account) this.$store.dispatch('TimelineSpace/fetchInstance', account) }, diff --git a/src/renderer/store/TimelineSpace.js b/src/renderer/store/TimelineSpace.js index 6e63e45a..387b5173 100644 --- a/src/renderer/store/TimelineSpace.js +++ b/src/renderer/store/TimelineSpace.js @@ -135,6 +135,23 @@ const TimelineSpace = { }) }) }, + bindDirectMessagesStreaming ({ commit, rootState }) { + ipcRenderer.on('update-start-directmessages-streaming', (event, update) => { + commit('TimelineSpace/Contents/DirectMessages/appendTimeline', update, { root: true }) + if (rootState.TimelineSpace.Contents.DirectMessages.heading && Math.random() > 0.8) { + commit('TimelineSpace/Contents/DirectMessages/archiveTimeline', {}, { root: true }) + } + commit('TimelineSpace/SideMenu/changeUnreadDirectMessagesTimeline', true, { root: true }) + }) + }, + startDirectMessagesStreaming (_, account) { + return new Promise((resolve, reject) => { + ipcRenderer.send('start-directmessages-streaming', account) + ipcRenderer.once('error-start-directmessages-streaming', (event, err) => { + reject(err) + }) + }) + }, unbindUserStreaming () { ipcRenderer.removeAllListeners('update-start-user-streaming') ipcRenderer.removeAllListeners('notification-start-user-streaming') @@ -150,6 +167,13 @@ const TimelineSpace = { stopLocalStreaming () { ipcRenderer.send('stop-local-streaming') }, + unbindDirectMessagesStreaming () { + ipcRenderer.removeAllListeners('error-start-directmessages-streaming') + ipcRenderer.removeAllListeners('update-start-directmessages-streaming') + }, + stopDirectMessagesStreaming () { + ipcRenderer.send('stop-drectmessages-streaming') + }, watchShortcutEvents ({ commit, dispatch }) { ipcRenderer.on('CmdOrCtrl+N', () => { dispatch('TimelineSpace/Modals/NewToot/openModal', {}, { root: true })