@rinq/websocket
Version:
Rinq in the browser.
44 lines (37 loc) • 1.19 kB
JavaScript
import {bindActionCreators} from 'redux'
import {contexts} from '../services'
import {
rinqConnect,
rinqDisconnect,
rinqContextReady,
rinqContextError,
rinqNotification
} from './actions'
export function initializeRinq () {
return function (
dispatch,
_,
{configurationReader, connectionManager, sessionManager}
) {
const connect = bindActionCreators(rinqConnect, dispatch)
const disconnect = bindActionCreators(rinqDisconnect, dispatch)
const notification = bindActionCreators(rinqNotification, dispatch)
configurationReader.read()
.then(function (configuration) {
connectionManager.url = configuration.gateway
sessionManager.on('session', connect)
sessionManager.on('notification', notification)
sessionManager.on('error', disconnect)
for (let context of contexts) {
context.context.on('ready', function () {
dispatch(rinqContextReady(context.id))
})
context.context.on('error', function (error) {
dispatch(rinqContextError(context.id, error))
})
context.context.start()
}
})
.catch(disconnect)
}
}