<script setup lang="ts">
import { onHide, onLaunch, onShow } from '@dcloudio/uni-app'
import { navigateToInterceptor } from '@/router/interceptor'
import { useAuthStore } from '@/store/auth'
import { useTokenStore } from '@/store/token'

onLaunch((options) => {
  // 初始化 store
  const tokenStore = useTokenStore()
  const authStore = useAuthStore()

  // 钉钉免登录逻辑
  async function handleDingTalkAutoLogin() {
    try {
      // 检查是否已经有有效的token
      if (!tokenStore.isTokenExpired) {
        console.log('已有有效登录状态，无需重新登录')
        return
      }

      console.log('尝试钉钉免登录...')
      // 尝试钉钉免登录
      await authStore.authDingTalkLogin()
      console.log('钉钉免登录成功')
    }
    catch (error) {
      console.error('钉钉免登录失败，将跳转到登录页面:', error)
      uni.navigateTo({ url: '/pages-fg/login/login' })
      // 免登录失败，跳转到登录页面
      // 注意：这里不立即跳转，避免影响应用启动性能
      // 路由拦截器会在页面跳转时处理未登录情况
    }
  }

  // 执行钉钉免登录
  handleDingTalkAutoLogin()
})
onShow((options) => {
  // 处理直接进入页面路由的情况：如h5直接输入路由、微信小程序分享后进入等
  // https://github.com/unibest-tech/unibest/issues/192
  if (options?.path) {
    navigateToInterceptor.invoke({ url: `/${options.path}`, query: options.query })
  }
  else {
    navigateToInterceptor.invoke({ url: '/' })
  }
})
onHide(() => {})
</script>

<style lang="scss">

</style>
