import defRegistry from './flow/default-registry' import flowMut from './flow/mutation-types' import chatMut from './chat/mutation-types' import flowService from '@/services/flowservice' let flow = {} let chat = {} for (let k in flowMut) { flow[k] = 'flow/' + k } for (let k in chatMut) { chat[k] = 'chat/' + k } let targetws export default store => { store.subscribe(mut => { // console.log('I changed -- perform the connection somehow', mut) if (mut.type === 'route/ROUTE_CHANGED') { let route = mut.payload.to let ctx = route.params.context let urlPath = [ window.location.host, ctx, 'conn' ] targetws = 'ws://' + urlPath.join('/') if (window.location.protocol === 'https:') { targetws = 'wss://' + urlPath.join('/') } flowService.connect(targetws) } }) // DEBUG PURPOSES window.dbgDisconnect = () => { flowService.close() } window.dbgReconnect = () => { flowService.connect(targetws) } // Connected flowService.connected(() => { // Make this in a service if (store.state.route.params.sessId === undefined) { flowService.sessionNew() return } store.dispatch(flow.NOTIFICATION_ADD, 'Connected') flowService.sessionLoad(undefined, store.state.route.params.sessId) }) flowService.on('document', (v) => { store.commit(flow.DOCUMENT_UPDATE, v.data) }) flowService.on('nodeUpdate', (v) => { store.commit(flow.NODE_UPDATE, v.data) }) flowService.on('registry', (v) => { let res = {} for (let k of Object.keys(v.data)) { const e = v.data[k] res[k] = { categories: e.categories, inputs: e.inputs, inputDesc: e.inputDesc, output: e.output, outputDesC: e.outputDesc, style: e.extra && e.extra.style } } store.commit(flow.REGISTRY_UPDATE, Object.assign({}, defRegistry, res)) }) flowService.on('nodeActivity', (v) => { store.commit(flow.ACTIVITY_UPDATE, v.data || {nodes: {}}) }) flowService.on('sessionNotify', (v) => { // ACTION store.dispatch(flow.NOTIFICATION_ADD, v.data) }) flowService.on('sessionJoin', (v) => { store.dispatch(chat.CHAT_JOIN, { handle: store.state.chat.handle, sessId: store.state.route.params.sessId }) store.commit(chat.EVENTS_UPDATE, []) }) /// // CHAT ////// flowService.on('chatUserList', (v) => { store.commit(chat.USERLIST_UPDATE, v.data) }) flowService.on('chatEvent', (v) => { store.commit(chat.EVENT_ADD, v.data) }) }