import { isLogin } from '@/utils/auth.uts' export const LOGIN_PAGE : string = '/pages/mine/mine' const WHITE_LIST : string[] = [ '/pages/index/index', '/pages/category/category', '/pages/mine/mine' ] function normalize(url : string) : string { let path = url const questionIndex = path.indexOf('?') if (questionIndex > -1) { path = path.substring(0, questionIndex) } return path } function inWhiteList(path : string) : boolean { for (let i = 0; i < WHITE_LIST.length; i++) { if (WHITE_LIST[i] == path) { return true } } return false } export function canNavigate(url : string) : boolean { if (inWhiteList(normalize(url))) { return true } return isLogin() } function goLogin(from : string) : void { uni.showToast({ title: '请先登录', icon: 'none' }) uni.navigateTo({ url: LOGIN_PAGE + '?redirect=' + encodeURIComponent(from) }) } export function navigateTo(url : string) : void { if (!canNavigate(url)) { goLogin(url) return } uni.navigateTo({ url: url }) } export function redirectTo(url : string) : void { if (!canNavigate(url)) { uni.redirectTo({ url: LOGIN_PAGE }) return } uni.redirectTo({ url: url }) } export function switchTab(url : string) : void { if (!canNavigate(url)) { goLogin(url) return } uni.switchTab({ url: url }) } export function reLaunch(url : string) : void { if (!canNavigate(url)) { uni.reLaunch({ url: LOGIN_PAGE }) return } uni.reLaunch({ url: url }) } export function navigateBack(delta ?: number) : void { uni.navigateBack({ delta: delta ?? 1 }) }