<template>

  <Flash/>

  <ProductList title="产品服务" comments="拥抱开源、坚守品质；致力于打造安全稳定高可用的WEB应用！"/>

  <ProductList title="插件市场" comments="安装插件，几秒钟内即可启动并运行"/>

  <ArticleList title="开发者社区" comments="分享研发成果 交流技术经验"/>

</template>
<script setup lang="ts">
import type {ApiResult} from "~/api";
import {useServerRequest} from "~/composables/useServerRequest";
import {useConfigInfo, useForm, useToken, useWebsite} from "~/composables/configState";
import type {BreadcrumbItem} from "~/types/global";
import type {Navigation} from "~/api/cms/navigation/model";
import {getIdBySpm} from "~/utils/common";
import Flash from './components/Flash.vue';
import ProductList from "./components/ProductList.vue";
import ArticleList from './components/ArticleList.vue';

// 引入状态管理
const route = useRoute();
const website = useWebsite();
const layout = ref<any>();
const config = useConfigInfo();
const token = useToken();
const form = useForm();
const breadcrumb = ref<BreadcrumbItem>();

// 请求数据
const reload = async () => {

  // 存在spm(优先级高)
  const {data: nav} = await useServerRequest<ApiResult<Navigation>>('/cms/cms-navigation/' + getIdBySpm(5))
  if (nav.value?.data) {
    form.value = nav.value.data
  } else {
    const {data: nav} = await useServerRequest<ApiResult<Navigation>>('/cms/cms-navigation/getNavigationByPath', {query: {path: route.path}})
    if (nav.value?.data) {
      form.value = nav.value?.data;
    }
  }
  // 页面布局
  if (form.value?.layout) {
    layout.value = JSON.parse(form.value?.layout)
  }

  // 未登录状态(是否强制登录)
  if (!token.value || token.value == '') {
    // if (config.value.MustLogin) {
    //   navigateTo('/passport/login');
    //   return false;
    // }
  }

  // seo
  useHead({
    title: `现代Web应用开发(Vue)框架 · WEBSOFT`,
    meta: [{name: form.value.design?.keywords, content: form.value.design?.description}],
    bodyAttrs: {
      class: "page-container",
    },
    script: [
      {
        children: `console.log(${JSON.stringify(form.value)})`,
      },
    ],
  });
  // 面包屑
  breadcrumb.value = form.value
}

watch(
    () => route.path,
    (path) => {
      console.log(path, '=>Path')

      reload();
    },
    {immediate: true}
);
</script>
