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

onLaunch((options) => {
  console.log('App.vue onLaunch', options)
  // 初始化 store
  const tokenStore = useTokenStore()
  const authStore = useAuthStore()
  
  // 钉钉免登录逻辑
  async function handleDingTalkAutoLogin() {
    try {
      // 检查是否已经有有效的token
      if (!tokenStore.isTokenExpired.value) {
        console.log('已有有效登录状态，无需重新登录');
        return;
      }
      
      console.log('尝试钉钉免登录...');
      // 尝试钉钉免登录
      await authStore.authDingTalkLogin();
      console.log('钉钉免登录成功');
    }
    catch (error) {
      console.error('钉钉免登录失败，将跳转到登录页面:', error);
      // 免登录失败，跳转到登录页面
      // 注意：这里不立即跳转，避免影响应用启动性能
      // 路由拦截器会在页面跳转时处理未登录情况
    }
  }
  
  // 执行钉钉免登录
  handleDingTalkAutoLogin();
})
onShow((options) => {
  console.log('App.vue 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(() => {
  console.log('App Hide')
})
</script>

<style lang="scss">

</style>
