import { gameModes } from '@/data/data.js' import { sortTeamByRole } from '@/helpers/functions.js' import { mapState } from 'vuex' export const liveGame = { data() { return { gameLength: 0, } }, computed: { allyTeam() { if (!this.current || !this.current.participants) { return [] } return this.current.participants .filter((p) => p.teamId === this.teamColor) .sort(this.sortTeamByRole) }, displayStartTime() { if (this.current.gameStartTime === 0) { return 'Not started yet' } return this.$options.filters.secToTime(this.gameLength, true) }, enemyTeam() { if (!this.current || !this.current.participants) { return [] } return this.current.participants .filter((p) => p.teamId !== this.teamColor) .sort(this.sortTeamByRole) }, gamemode() { if (this.current.participants) { return this.current.gameType === 'CUSTOM_GAME' ? { type: '', name: 'Custom Game' } : gameModes[this.current.gameQueueConfigId] } else { return { type: '', name: '' } } }, gameStartTime() { return this.current ? this.current.gameStartTime : 0 }, teamColor() { return this.current.participants.find((p) => p.puuid === this.account.puuid).teamId }, ...mapState({ account: (state) => state.summoner.basic.account, current: (state) => state.summoner.live.match, }), }, created() { this.updateGameLength() setInterval(() => { this.gameLength++ }, 1000) }, watch: { gameStartTime() { this.updateGameLength() }, }, methods: { updateGameLength() { if (this.gameStartTime === 0) { return (this.gameLength = 0) } this.gameLength = (new Date() - new Date(this.gameStartTime)) / 1000 }, sortTeamByRole, }, }