loader.js
1 import request from 'superagent' 2 3 const HARDCODED_DEV_URL = 'http://localhost:8003' 4 5 let ao_server 6 7 if (import.meta.env.DEV) { 8 // In dev, refer to the backend location 9 ao_server = HARDCODED_DEV_URL 10 } else { 11 // When built, default to / 12 ao_server = '' 13 } 14 15 // Consider replacing socketIO with normal websocket 16 import io from 'socket.io-client' 17 let socket = io(ao_server) 18 19 function attachEventStream(commit, dispatch){ 20 socket.off('eventstream') 21 socket.on('eventstream', ev => { 22 dispatch('displayEvent', ev) 23 commit('applyEvent', ev) 24 }) 25 } 26 27 28 function attachSocket(commit, dispatch, callback){ 29 socket = io(ao_server) 30 socket.off('connect') 31 socket.on('connect', () => { 32 socket.emit('authentication', { 33 session: state.session, 34 token: state.token 35 }) 36 }) 37 38 socket.off('authenticated') 39 socket.on('authenticated', ()=> { 40 console.log('rcv authenticated') 41 attachEventStream(commit, dispatch) 42 callback() 43 }) 44 } 45 46 const actions = { 47 loadCurrent({ commit, dispatch, state, rootState }){ 48 attachSocket(commit, dispatch, () => { 49 console.log('qual', rootState.tasks, rootState.members) 50 commit("setReqStatus", "pending") 51 let startTs = Date.now() 52 if (rootState.tasks.length === 0){ 53 request 54 .post(ao_server + '/tasks/gg') 55 .set("Authorization", state.token) 56 .end((err, res)=> { 57 commit('loadCards', res.body) 58 }) 59 } 60 if (rootState.members.length === 0){ 61 request 62 .post(ao_server + '/state') 63 .set("Authorization", state.token) 64 .end((err, res)=>{ 65 if (!(err || !res.body)) { 66 commit('setCurrent', res.body) 67 commit("setReqStatus", Date.now() - startTs) 68 res.body.sessions.forEach(s => { 69 if (s.session === state.session){ 70 commit("goGo", [ s.ownerId ]) 71 } 72 }) 73 } 74 }) 75 } 76 }) 77 }, 78 makeEvent({commit, state}, newEv){ 79 let startTs = Date.now() 80 commit("setReqStatus", "pending") 81 request 82 .post(ao_server + '/events') 83 .send(newEv) 84 .set("Authorization", state.token) 85 .end((err, res)=>{ 86 if (err || !res.body) { 87 commit("setReqStatus", "failed", res.body) 88 console.log({err, res}) 89 } else { 90 commit("setReqStatus", Date.now() - startTs) 91 } 92 }) 93 } 94 } 95 96 const state = { 97 token: '', 98 session: '', 99 reqStatus: 'ready', 100 pendingFlash: [0,0,0,0,0], 101 } 102 103 const mutations = { 104 setReqStatus(loader, status){ 105 loader.reqStatus = status 106 }, 107 setAuth(loader, auth){ 108 loader.token = auth.token 109 loader.session = auth.session 110 }, 111 } 112 113 export default { 114 state, 115 mutations, 116 actions 117 }