/**
 * 路由登录拦截器（黑名单模式）
 * 适用：大部分页面可访问，少数页面需要登录
 */

import { userToken } from "@/composables/config";
import {
    needLoginPages as _needLoginPages,
    getNeedLoginPages,
} from '@/utils/needLoginPages.js'

// 登录页
const LOGIN_ROUTE = '/pages/login/index'

// 是否开发环境
const isDev = process.env.NODE_ENV === 'development'

// 拦截器主体
const routeGuard = {
    invoke({ url }) {
        // 1️⃣ 解析纯路径（去掉 query）
        const path = url.split('?')[0]
        console.log(path, 222212112);


        // 2️⃣ 获取需要登录的页面列表
        const needLoginPages = isDev
            ? getNeedLoginPages()
            : _needLoginPages

        // 3️⃣ 是否命中黑名单
        const needLogin = needLoginPages.includes(path)

        // 4️⃣ 是否已登录
        const hasToken = userToken.value

        // 5️⃣ 放行条件
        if (!needLogin || hasToken) {
            return true
        }

        // 6️⃣ 未登录 → 跳登录页
        uni.navigateTo({
            url: LOGIN_ROUTE,
        })

        // ⚠️ 必须 return false
        return false
    },
}

// 对外安装方法
export const routeInterceptor = {
    install() {
        uni.addInterceptor('navigateTo', routeGuard)
        uni.addInterceptor('redirectTo', routeGuard)
        uni.addInterceptor('reLaunch', routeGuard)
        uni.addInterceptor('switchTab', routeGuard)
    },
}
