Page MenuHomePhorge

No OneTemporary

Size
3 KB
Referenced Files
None
Subscribers
None
diff --git a/src/modules/chat.js b/src/modules/chat.js
index 17bc132c12..769e27794a 100644
--- a/src/modules/chat.js
+++ b/src/modules/chat.js
@@ -1,103 +1,103 @@
import { Socket } from 'phoenix'
import 'converse.js'
import 'converse.js/css/converse.css'
import apiService from '../services/api/api.service'
window.converse.plugins.add('custom_plugin', {
initialize: function () {
this._converse.api.waitUntil('statusInitialized').then(() => {
this._converse.chatboxviews.el.style.display = 'block'
})
window.disconnectConverse = () => {
this._converse.chatboxviews.el.style.display = 'none'
this._converse.api.user.logout()
}
}
})
const chat = {
state: {
messages: [],
channel: { state: '' },
socket: null,
wsToken: null,
chatDisabled: false
},
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)
},
setMessages (state, messages) {
state.messages = messages.slice(-19, 20)
},
setWsToken (state, token) {
state.wsToken = token
},
setChatDisabled (state, value) {
state.chatDisabled = value
}
},
actions: {
setWsToken (store, token) {
store.commit('setWsToken', token)
},
initializeChat (store) {
if (store.state.chatDisabled) {
return
}
// First, try Converse.JS XMPP chat integration
apiService.fetchXMPPConnData()
.then((data) => {
window.converse.initialize({
debug: true,
authentication: 'prebind',
prebind_url: data.prebind_url,
keepalive: true,
jid: data.jid,
auto_away: 300,
auto_reconnect: true,
bosh_service_url: data.http_bind_url,
message_archiving: 'always',
view_mode: 'overlayed',
whitelisted_plugins: ['custom_plugin']
})
})
.catch(() => {
// Otherwise, set up websocket connection
const token = store.state.wsToken
if (token) {
const socket = new Socket('/socket', { params: { token } })
socket.connect()
const channel = socket.channel('chat:public')
store.commit('setSocket', socket)
channel.on('new_msg', (msg) => {
store.commit('addMessage', msg)
})
channel.on('messages', ({ messages }) => {
store.commit('setMessages', messages)
})
channel.join()
store.commit('setChannel', channel)
}
})
},
disableChat (store) {
store.commit('setChatDisabled', true)
},
disconnectFromChat (store) {
store.state.socket && store.state.socket.disconnect()
- window.disconnectConverse()
+ window.disconnectConverse && window.disconnectConverse()
}
}
}
export default chat

File Metadata

Mime Type
text/x-diff
Expires
Sun, Aug 9, 10:11 AM (1 d, 7 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1724452
Default Alt Text
(3 KB)

Event Timeline