CommonCategoryGlobalLoader.ts 1.4 KB

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