import { parseQuery } from 'uni-shared' import { ANI_SHOW, ANI_DURATION } from '../../constants' import { showWebview } from './util' import { setStatusBarStyle, invoke } from '../../bridge' import { registerPage } from '../../framework/page' import { navigate } from '../../framework/navigator' function _navigateTo ({ path, query, animationType, animationDuration }, callbackId) { UniServiceJSBridge.emit('onAppRoute', { type: 'navigateTo', path }) showWebview( registerPage({ path, query, openType: 'navigate' }), animationType, animationDuration, () => { invoke(callbackId, { errMsg: 'navigateTo:ok' }) } ) setStatusBarStyle() } export function navigateTo ({ url, openType, animationType, animationDuration }, callbackId) { const urls = url.split('?') const path = urls[0] const routeStyles = __uniRoutes.find(route => route.path === path).window const globalStyle = __uniConfig.window if (!animationType) { animationType = routeStyles.animationType || globalStyle.animationType || ANI_SHOW } if (!animationDuration) { animationDuration = routeStyles.animationDuration || globalStyle.animationDuration || ANI_DURATION } const query = parseQuery(urls[1] || '') navigate(path, function () { _navigateTo({ path, query, animationType, animationDuration }, callbackId) }, openType === 'appLaunch') }