cloudroam
7 天以前 c31a8def0ac90d86b8e8e345441bd28002a9ef2f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import { useUserStore } from '@/store/user'
 
export const useNavigator = () => {
    const userStore = useUserStore()
    // 黑名单列表:未登录时禁止访问这些路径
    const loginRequiredRoutes = [
        '/sub-pages/mine/settings',
        '/pages/settings/index',
        '/sub-pages/mine/index',
    ]
 
    const navigateTo = (url: string) => {
        const isLogin = userStore.hasLogin
        const noQueryUrl = url.split('?')[0]
 
        if (!isLogin && loginRequiredRoutes.includes(noQueryUrl)) {
            uni.navigateTo({
                url: '/pages/login/login'
            })
            return
        }
 
        uni.navigateTo({ url })
    }
 
    const reLaunchTo = (url: string) => {
        
        const isLogin = userStore.hasLogin
        const noQueryUrl = url.split('?')[0]
 
        if (!isLogin && loginRequiredRoutes.includes(noQueryUrl)) {
            uni.navigateTo({
                url: '/pages/login/login'
            })
            return
        }
 
        uni.reLaunch({ url })
    }
 
    const toProtocol = (title: string) => {
        uni.navigateTo({
            url: `/sub-pages/protocol/protocol?title=${encodeURIComponent(title)}`
        })
    }
 
    return {
        navigateTo,
        reLaunchTo,
        toProtocol
    }
}