Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 1077x 1077x 1077x 1077x 350x 349x 349x 349x 17x 17x 2x 2x | /*
* Copyright 2021 Harness Inc. All rights reserved.
* Use of this source code is governed by the PolyForm Shield 1.0.0 license
* that can be found in the licenses directory at the root of this repository, also available at
* https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt.
*/
import { useLocation, useHistory } from 'react-router-dom'
import qs from 'qs'
import type { IStringifyOptions } from 'qs'
import { useQueryParams } from './useQueryParams'
export interface UseUpdateQueryParamsReturn<T> {
updateQueryParams(values: T, options?: IStringifyOptions, replaceHistory?: boolean): void
replaceQueryParams(values: T, options?: IStringifyOptions, replaceHistory?: boolean): void
}
export function useUpdateQueryParams<T = Record<string, string>>(): UseUpdateQueryParamsReturn<T> {
const { pathname } = useLocation()
const { push, replace } = useHistory()
const queryParams = useQueryParams<T>()
return {
updateQueryParams(values: T, options?: IStringifyOptions, replaceHistory?: boolean): void {
const path = `${pathname}?${qs.stringify({ ...queryParams, ...values }, options)}`
replaceHistory ? replace(path) : push(path)
},
replaceQueryParams(values: T, options?: IStringifyOptions, replaceHistory?: boolean): void {
const path = `${pathname}?${qs.stringify(values, options)}`
replaceHistory ? replace(path) : push(path)
}
}
}
|