<script setup lang="ts">
import ModalAuthentication from '~/components/ModalAuthentication.vue'

const toast = useToast()
const route = useRoute()
const router = useRouter()
const modal = useModal()
const loginState = useLoginState()

useHead({
  titleTemplate(title) {
    return title ? `${title} - AIGC 微课视频研创平台` : 'AIGC 微课视频研创平台'
  },
})

useSeoMeta({
  viewport: 'width=device-width, initial-scale=1.0, user-scalable=no',
})

onMounted(() => {
  loginState.checkSession().then(async (res) => {
    if (!res && loginState.token) {
      toast.add({
        title: '登录失效',
        description: '登录已过期，请重新登录',
        color: 'red',
        icon: 'i-tabler-alert-triangle',
      })
      modal.open(ModalAuthentication)
    } else if (!res && !loginState.token) {
      // Prevents redirect from register page
      if (route.path === '/user/register') return
      router.replace('/user/authenticate')
    }
  })
})
</script>

<template>
  <div>
    <NuxtLoadingIndicator />

    <NuxtLayout>
      <NuxtPage />
    </NuxtLayout>

    <UModals />
    <USlideovers />
    <UNotifications />
  </div>
</template>
