import { ANI_SHOW, ANI_DURATION } from '../../constants' import { navigateFinish } from '../../framework/navigator' export function closeWebview (webview, animationType, animationDuration) { webview[webview.__preload__ ? 'hide' : 'close'](animationType, animationDuration) } export function showWebview (webview, animationType, animationDuration, showCallback, delay) { if (typeof delay === 'undefined') { delay = webview.nvue ? 0 : 100 } if (typeof animationDuration === 'undefined') { animationDuration = ANI_DURATION } else { animationDuration = parseInt(animationDuration) } if (process.env.NODE_ENV !== 'production') { console.log(`[show][${Date.now()}]`, delay) } const duration = animationDuration || ANI_DURATION setTimeout(() => { const execShowCallback = function () { if (execShowCallback._called) { if (process.env.NODE_ENV !== 'production') { console.log('execShowCallback.prevent') } return } execShowCallback._called = true showCallback && showCallback() navigateFinish(webview) } const timer = setTimeout(() => { if (process.env.NODE_ENV !== 'production') { console.log(`[show.callback.timer][${Date.now()}]`) } execShowCallback() }, duration + 150) webview.show( animationType || ANI_SHOW, duration, () => { if (process.env.NODE_ENV !== 'production') { console.log(`[show.callback][${Date.now()}]`) } if (!execShowCallback._called) { clearTimeout(timer) } execShowCallback() } ) }, delay) }