All files / mp getSceneParams.ts

0% Statements 0/8
0% Branches 0/7
0% Functions 0/1
0% Lines 0/8

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                                                         
import { getCurrentPageQuery } from './getCurrentPageQuery'
import { parseUrlQueryString } from '../utils'
 
export type GetSceneParamsParser<T> =
  | 'searchParams'
  | 'json'
  | ((data: string) => T)
 
/**
 * 获取场景参数。
 *
 * @param parser 解析器
 */
export function getSceneParams<T extends Record<any, any> = Record<any, any>>(
  parser: GetSceneParamsParser<T> = 'searchParams',
): T {
  const { scene } = getCurrentPageQuery<{ scene?: string }>()
  if (!scene) {
    return {} as any
  }
  if (parser === 'searchParams') {
    return parseUrlQueryString<T>(scene)
  }
  if (parser === 'json') {
    return JSON.parse(scene)
  }
  return parser(scene)
}