app.js 1018 Bytes
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import './utils/polyfill'
import './app.less'
import { saveCurrentPagePath, hasAuth, silentAuth, navigateToAuth } from '@/utils/authRedirect'

const App = createApp({
    async onLaunch(options) {
        const path = options?.path || ''
        const query = options?.query || {}

        const query_string = Object.keys(query)
            .map((key) => `${key}=${encodeURIComponent(query[key])}`)
            .join('&')
        const full_path = query_string ? `${path}?${query_string}` : path

        if (full_path) {
            saveCurrentPagePath(full_path)
        }

        if (path === 'pages/auth/index') return

        if (!hasAuth()) {
            try {
                await silentAuth()
            } catch (error) {
                console.error('静默授权失败:', error)
                navigateToAuth(full_path || undefined)
            }
        }
    },
    onShow() {
    },
})

App.use(createPinia())

export default App