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 })