import {
|
lastStatusBarStyle,
|
setStatusBarStyle
|
} from '../../bridge'
|
export function onWebviewPopGesture (webview) {
|
let popStartStatusBarStyle
|
webview.addEventListener('popGesture', e => {
|
if (e.type === 'start') {
|
// 设置下一个页面的 statusBarStyle
|
const pages = getCurrentPages()
|
const page = pages[pages.length - 2]
|
popStartStatusBarStyle = lastStatusBarStyle
|
const statusBarStyle = page && page.$page.meta.statusBarStyle
|
statusBarStyle && setStatusBarStyle(statusBarStyle)
|
} else if (e.type === 'end' && !e.result) {
|
// 拖拽未完成,设置为当前状态栏前景色
|
setStatusBarStyle(popStartStatusBarStyle)
|
} else if (e.type === 'end' && e.result) {
|
const pages = getCurrentPages()
|
const len = pages.length
|
const page = pages[pages.length - 1]
|
page && page.$remove()
|
setStatusBarStyle()
|
// 仅当存在一个页面,且是直达页面时,才 reLaunch 首页
|
if (page && len === 1 && isDirectPage(page)) {
|
reLaunchEntryPage()
|
} else {
|
UniServiceJSBridge.emit('onAppRoute', {
|
type: 'navigateBack'
|
})
|
}
|
}
|
})
|
}
|
|
/**
|
* 是否处于直达页面
|
* @param page
|
* @returns
|
*/
|
function isDirectPage (page) {
|
return (
|
__uniConfig.realEntryPagePath &&
|
page.$page.route === __uniConfig.entryPagePath
|
)
|
}
|
/**
|
* 重新启动到首页
|
*/
|
function reLaunchEntryPage () {
|
__uniConfig.entryPagePath = __uniConfig.realEntryPagePath
|
delete __uniConfig.realEntryPagePath
|
uni.reLaunch({
|
url: addLeadingSlash(__uniConfig.entryPagePath)
|
})
|
}
|
|
function hasLeadingSlash (str) {
|
return str.indexOf('/') === 0
|
}
|
|
function addLeadingSlash (str) {
|
return hasLeadingSlash(str) ? str : '/' + str
|
}
|