Skip to content

Commit

Permalink
fix(web-core/useRouteQuery): URL not updating immediately in some cas…
Browse files Browse the repository at this point in the history
…es (#7935)

Introduced by 290b5df
  • Loading branch information
ByScripts authored Sep 10, 2024
1 parent e830bf0 commit 7c31b44
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,16 @@ export function handleDelete(source: WritableComputedRef<any>, value: any) {
if (Array.isArray(source.value)) {
source.value = [...source.value].splice(value, 1)
} else if (source.value instanceof Set) {
source.value = new Set(source.value)
source.value.delete(value)
const newSet = new Set(source.value)
newSet.delete(value)
source.value = newSet
} else if (source.value instanceof Map) {
source.value = new Map(source.value)
source.value.delete(value)
const newMap = new Map(source.value)
newMap.delete(value)
source.value = newMap
} else if (typeof source.value === 'object' && source.value !== null) {
source.value = { ...source.value }
delete source.value[value]
const newObject = { ...source.value }
delete newObject[value]
source.value = newObject
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@ import type { WritableComputedRef } from 'vue'

export function handleSet(source: WritableComputedRef<any>, key: any, value: any) {
if (Array.isArray(source.value)) {
source.value = [...source.value]
source.value[key] = value
const newArray = source.value.slice()
newArray[key] = value
source.value = newArray
} else if (source.value instanceof Map) {
source.value = new Map(source.value)
source.value.set(key, value)
const newMap = new Map(source.value)
newMap.set(key, value)
source.value = newMap
} else if (typeof source.value === 'object') {
if (source.value === null) {
return
Expand Down
11 changes: 10 additions & 1 deletion @xen-orchestra/web-core/lib/composables/route-query/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,13 @@ export type GuessActions<TData> =
? MapActions<TKey, TValue>
: EmptyObject

export type RouteQuery<TData> = WritableComputedRef<TData> & GuessActions<TData>
export type RouteQuery<TData> = WritableComputedRef<
TData extends Set<infer V>
? ReadonlySet<V>
: TData extends Map<infer K, infer V>
? ReadonlyMap<K, V>
: TData extends object
? Readonly<TData>
: TData
> &
GuessActions<TData>

0 comments on commit 7c31b44

Please sign in to comment.