You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
apl-slapdash/src/store.js

53 lines
1.1 KiB
JavaScript

import { reactive, readonly } from 'vue'
import axios from 'axios'
import { handleMsg, sendSub } from './utils/websocket'
const token = window.localStorage.getItem('token')
const state = reactive({
name: '',
token: token || '',
session: '',
loggedIn: false,
ws: null,
events: [],
rosters: [],
matches: [],
casters: [],
hosts: [],
streams: [],
streamsFull: [],
brackets: [],
overlayStream: null,
server: false,
})
const methods = {
authenticate: async (token) => {
window.localStorage.setItem('token', token)
return axios.post('http://178.79.128.135:5000/api/v1', {
token,
})
.then((res) => {
state.session = res.data.session
state.name = res.data.name
state.loggedIn = true
return true
})
},
connect: (uri) => {
state.ws = new WebSocket(`ws://178.79.128.135:5000/ws/${state.session}`)
state.ws.onopen = () => {
sendSub(state.ws)
}
state.ws.onmessage = (e) => {
const data = JSON.parse(e.data)
handleMsg(data)
}
}
}
export default {
state,
methods,
}