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.
53 lines
1.1 KiB
JavaScript
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,
|
|
} |