| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- 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 })
- }
|