apply route filters on view creation for context switching

This commit is contained in:
2023-05-05 17:16:58 +02:00
parent 87d06fa25c
commit aa12b6fed6
+21 -17
View File
@@ -88,7 +88,7 @@ export default defineComponent({
return {
model: { server: undefined, weapon: undefined } as unknown as {
weapon: string | undefined;
server: { name?: string } | (Server & { name?: string })[] | undefined;
server: string | undefined;
},
filters: {} as Filters,
store: useKillStore(),
@@ -98,7 +98,8 @@ export default defineComponent({
},
created () {
let server
if (this.$route.query.server) server = { name: this.$route.query.server?.toString() }
this.applyRouteFilters()
if (this.$route.query.server) server = this.$route.query.server?.toString()
this.model = {
server,
weapon: this.$route.query.weapon?.toString()
@@ -177,7 +178,7 @@ export default defineComponent({
},
model: {
handler (newModel) {
this.filters.server = newModel.server?.name
this.filters.server = newModel.server
this.filters.weapon = newModel.weapon
},
deep: true
@@ -196,20 +197,8 @@ export default defineComponent({
const { player: _, ...withoutPlayer } = this.$route.query
router.push({ query: { player: newValue?.id, ...withoutPlayer } })// .then(e => { console.log(e) })
},
'$route' (to) {
if (this.playerHighlighted?.id !== to.query.player) {
const playerId = to.query.player?.toString()
if (playerId) {
this.highlight_player(playerId)
}
}
if (this.filters.weapon !== to.query.weapon) {
this.model.weapon = to.query.weapon
}
if (this.filters.server !== to.query.server) {
if (to.query.server) this.model.server = { name: to.query.server }
else this.model.server = undefined
}
'$route' () {
this.applyRouteFilters()
}
},
methods: {
@@ -220,6 +209,21 @@ export default defineComponent({
return
}
this.playerHighlighted = undefined
},
applyRouteFilters () {
if (this.playerHighlighted?.id !== this.$route.query.player) {
const playerId = this.$route.query.player?.toString()
if (playerId) {
this.highlight_player(playerId)
}
}
if (this.filters.weapon !== this.$route.query.weapon) {
this.model.weapon = this.$route.query.weapon?.toString()
}
if (this.filters.server !== this.$route.query.server) {
if (this.$route.query.server) this.model.server = this.$route.query.server?.toString()
else this.model.server = undefined
}
}
}
})