import SHA256 from 'crypto-js/sha256'

/**
 * 是否开启 vconsole 调试面板
 * - 开发模式(__DEBUG__=true)下自动开启
 * - 生产模式下可通过 URL 参数 ?vc 或 ?debug 手动开启
 * 
 * 关闭方式：将 vite.config.ts 中 __DEBUG__ 改为 false，且访问时不带 ?vc 参数
 */
function shouldEnableVConsole(): boolean {
    if (__DEBUG__) return true
    const params = new URLSearchParams(location.search)
    return params.has('vc') || params.has('debug')
}

/**
 * 是否使用模拟微信数据
 * - 开发模式下如果 URL 没有真实 token 参数，自动启用模拟数据
 * - 生产模式下可通过 URL 参数 ?mock 手动启用
 */
export function shouldMockWechat(): boolean {
    const params = new URLSearchParams(location.search)
    if (params.get('token')) return false // 有真实 token 就不 mock
    if (__DEBUG__) return true
    return params.has('mock')
}

/** 模拟的微信用户数据 */
export function getMockWechat() {
    const mockToken = 'debug_mock_token_' + Date.now()
    return {
        token: SHA256(mockToken).toString(),
        token_origin: mockToken,
        nickname: '测试用户',
        avatar: 'https://picsum.photos/200',
    }
}

/**
 * 初始化 vconsole（动态导入，生产环境未触发时不会打包）
 */
export async function initVConsole() {
    if (!shouldEnableVConsole()) return

    try {
        const { default: VConsole } = await import('vconsole')
        const vc = new VConsole()
        console.log('[debug] vconsole 已启动')
        return vc
    } catch (e) {
        console.warn('[debug] vconsole 加载失败:', e)
    }
}
