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