aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorslice <ryaneft@gmail.com>2019-03-10 11:23:27 -0700
committerslice <ryaneft@gmail.com>2019-03-10 11:25:36 -0700
commite618c6ffb0b974156b89f3e54737e738e94b12b3 (patch)
tree5197a0bc55ac81cad80e05686bb664c644da9109 /src
parenta67881b096dc4e49db804b7267c3bf49ff78bca6 (diff)
Only connect to chat when authenticating in the first place
To avoid duplication of the connection, the chat socket is destroyed upon logging out.
Diffstat (limited to 'src')
-rw-r--r--src/boot/after_store.js4
-rw-r--r--src/modules/api.js2
-rw-r--r--src/modules/chat.js10
-rw-r--r--src/modules/users.js4
4 files changed, 15 insertions, 5 deletions
diff --git a/src/boot/after_store.js b/src/boot/after_store.js
index a8e2bf35..cd88c188 100644
--- a/src/boot/after_store.js
+++ b/src/boot/after_store.js
@@ -89,10 +89,8 @@ const afterStoreSetup = ({ store, i18n }) => {
copyInstanceOption('noAttachmentLinks')
copyInstanceOption('showFeaturesPanel')
- if ((config.chatDisabled)) {
+ if (config.chatDisabled) {
store.dispatch('disableChat')
- } else {
- store.dispatch('initializeSocket')
}
return store.dispatch('setTheme', config['theme'])
diff --git a/src/modules/api.js b/src/modules/api.js
index dc5278f8..31cb55c6 100644
--- a/src/modules/api.js
+++ b/src/modules/api.js
@@ -50,7 +50,7 @@ const api = {
},
initializeSocket (store) {
// Set up websocket connection
- if (!store.state.chatDisabled && store.state.wsToken) {
+ if (!store.state.chatDisabled) {
const token = store.state.wsToken
const socket = new Socket('/socket', {params: {token}})
socket.connect()
diff --git a/src/modules/chat.js b/src/modules/chat.js
index 383ac75c..2804e577 100644
--- a/src/modules/chat.js
+++ b/src/modules/chat.js
@@ -1,12 +1,16 @@
const chat = {
state: {
messages: [],
- channel: {state: ''}
+ channel: {state: ''},
+ socket: null
},
mutations: {
setChannel (state, channel) {
state.channel = channel
},
+ setSocket (state, socket) {
+ state.socket = socket
+ },
addMessage (state, message) {
state.messages.push(message)
state.messages = state.messages.slice(-19, 20)
@@ -16,8 +20,12 @@ const chat = {
}
},
actions: {
+ disconnectFromChat (store) {
+ store.state.socket.disconnect()
+ },
initializeChat (store, socket) {
const channel = socket.channel('chat:public')
+ store.commit('setSocket', socket)
channel.on('new_msg', (msg) => {
store.commit('addMessage', msg)
})
diff --git a/src/modules/users.js b/src/modules/users.js
index 4159964c..26884750 100644
--- a/src/modules/users.js
+++ b/src/modules/users.js
@@ -292,6 +292,7 @@ const users = {
logout (store) {
store.commit('clearCurrentUser')
+ store.dispatch('disconnectFromChat')
store.commit('setToken', false)
store.dispatch('stopFetching', 'friends')
store.commit('setBackendInteractor', backendInteractorService())
@@ -321,6 +322,9 @@ const users = {
if (user.token) {
store.dispatch('setWsToken', user.token)
+
+ // Initialize the chat socket.
+ store.dispatch('initializeSocket')
}
// Start getting fresh posts.