CommonCategoryGlobalLoader.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { inject, provide, ref, type Ref } from "vue";
  2. import { requireNotNull } from "@imengyu/imengyu-utils";
  3. import NotConfigue from "@/api/NotConfigue";
  4. import { showError } from "@/common/composeabe/ErrorDisplay";
  5. import type { IHomeCommonCategoryDefine } from "./CommonCategoryDefine";
  6. import ApiCofig from "@/common/config/ApiCofig";
  7. import DefaultCofig from "./DefaultCategory.json";
  8. import { isDev } from "@/common/config/AppCofig";
  9. // 全局加载默认分类
  10. export const COMMON_CATEGORY_KEY = 'DefaultCategory';
  11. const defaultCommonCategory = ref<IHomeCommonCategoryDefine>({
  12. page: [],
  13. });
  14. export function injectCommonCategory() {
  15. return inject(COMMON_CATEGORY_KEY, defaultCommonCategory) as Ref<IHomeCommonCategoryDefine>;
  16. }
  17. export function useCommonCategoryGlobalLoader() {
  18. const commonCategoryData = ref<IHomeCommonCategoryDefine>(defaultCommonCategory.value);
  19. provide(COMMON_CATEGORY_KEY, commonCategoryData);
  20. async function loadCommonCategory() {
  21. uni.showLoading({ title: '加载中' });
  22. try {
  23. if (isDev) {
  24. commonCategoryData.value = DefaultCofig as IHomeCommonCategoryDefine;
  25. return;
  26. }
  27. const category = (await NotConfigue.get<IHomeCommonCategoryDefine>(ApiCofig.dynamicCategoryConfigServer, '加载默认分类')).data;
  28. if (category)
  29. commonCategoryData.value = category;
  30. else
  31. showError(undefined, '默认分类未配置');
  32. } catch (error) {
  33. showError(error, '加载默认分类失败');
  34. } finally {
  35. uni.hideLoading();
  36. }
  37. }
  38. return {
  39. loadCommonCategory,
  40. }
  41. }