framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
28 lines (26 loc) • 963 B
JavaScript
import Utils from '../../utils/utils';
export default function (direction, route, options) {
const router = this;
const redirect = route.route.redirect;
if (options.initial && router.params.pushState) {
options.replaceState = true; // eslint-disable-line
options.history = true; // eslint-disable-line
}
function redirectResolve(redirectUrl, redirectOptions = {}) {
router.allowPageChange = true;
router[direction](redirectUrl, Utils.extend({}, options, redirectOptions));
}
function redirectReject() {
router.allowPageChange = true;
}
if (typeof redirect === 'function') {
router.allowPageChange = false;
const redirectUrl = redirect.call(router, route, redirectResolve, redirectReject);
if (redirectUrl && typeof redirectUrl === 'string') {
router.allowPageChange = true;
return router[direction](redirectUrl, options);
}
return router;
}
return router[direction](redirect, options);
}