mirror of
https://github.com/vkaelin/LeagueStats.git
synced 2026-03-26 13:27:28 +00:00
78 lines
2.3 KiB
JavaScript
78 lines
2.3 KiB
JavaScript
|
|
import Vue from 'vue'
|
||
|
|
import { axios } from '@/plugins/axios'
|
||
|
|
|
||
|
|
export const namespaced = true
|
||
|
|
|
||
|
|
export const state = {
|
||
|
|
matches: []
|
||
|
|
}
|
||
|
|
|
||
|
|
export const mutations = {
|
||
|
|
MATCH_LOADING(state, matchId) {
|
||
|
|
const alreadyIn = state.matches.find(m => m.matchId === matchId)
|
||
|
|
if (!alreadyIn) {
|
||
|
|
state.matches.push({ matchId, status: 'loading' })
|
||
|
|
}
|
||
|
|
},
|
||
|
|
MATCH_FOUND(state, {matchDetails, ranksLoaded }) {
|
||
|
|
matchDetails.status = 'loaded'
|
||
|
|
matchDetails.ranksLoaded = ranksLoaded
|
||
|
|
|
||
|
|
// Set SoloQ as rank for now
|
||
|
|
if (ranksLoaded) {
|
||
|
|
for (const player of matchDetails.blueTeam.players) {
|
||
|
|
player.rank = player.rank && player.rank[420]
|
||
|
|
}
|
||
|
|
for (const player of matchDetails.redTeam.players) {
|
||
|
|
player.rank = player.rank && player.rank[420]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
const index = state.matches.findIndex(m => m.matchId === matchDetails.matchId)
|
||
|
|
Vue.set(state.matches, index, matchDetails)
|
||
|
|
},
|
||
|
|
MATCH_RANKS_FOUND(state, { matchId, ranksByPlayer }) {
|
||
|
|
const match = state.matches.find(m => m.matchId === matchId)
|
||
|
|
|
||
|
|
for (const player of match.blueTeam.players) {
|
||
|
|
const ranks = ranksByPlayer[player.id]
|
||
|
|
if (!ranks) continue
|
||
|
|
Vue.set(player, 'rank', ranks[420])
|
||
|
|
}
|
||
|
|
|
||
|
|
for (const player of match.redTeam.players) {
|
||
|
|
const ranks = ranksByPlayer[player.id]
|
||
|
|
if (!ranks) continue
|
||
|
|
Vue.set(player, 'rank', ranks[420])
|
||
|
|
}
|
||
|
|
|
||
|
|
match.ranksLoaded = true
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
export const actions = {
|
||
|
|
async matchDetails({ commit }, matchId) {
|
||
|
|
commit('MATCH_LOADING', matchId)
|
||
|
|
console.log('MATCH DETAILS STORE', matchId)
|
||
|
|
|
||
|
|
const resp = await axios(({ url: 'match/details', data: { matchId }, method: 'POST' })).catch(() => { })
|
||
|
|
console.log('--- DETAILS INFOS ---')
|
||
|
|
console.log(resp.data)
|
||
|
|
const {matchDetails, ranksLoaded} = resp.data
|
||
|
|
commit('MATCH_FOUND', {matchDetails, ranksLoaded })
|
||
|
|
|
||
|
|
// If the ranks of the players are not yet known
|
||
|
|
if (!ranksLoaded) {
|
||
|
|
const ranks = await axios(({ url: 'match/details/ranks', data: { matchId }, method: 'POST' })).catch(() => { })
|
||
|
|
if (!ranks) return
|
||
|
|
console.log('--- RANK OF MATCH DETAILS ---')
|
||
|
|
console.log(ranks.data)
|
||
|
|
commit('MATCH_RANKS_FOUND', { matchId, ranksByPlayer: ranks.data })
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export const getters = {
|
||
|
|
getMatchDetails: state => matchId => state.matches.find(m => m.matchId === matchId),
|
||
|
|
}
|