app.ts 969 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { updatePreferences } from '@vben/preferences';
  2. import { acceptHMRUpdate, defineStore } from 'pinia';
  3. import { ConfigApi } from '#/api';
  4. interface AccessState {
  5. /**
  6. * 配置信息
  7. */
  8. appInfo: ConfigApi.AppInfo | null;
  9. }
  10. /**
  11. * @zh_CN 配置信息相关
  12. */
  13. export const useAppStore = defineStore('web-info', {
  14. actions: {
  15. setAppInfo(appInfo: ConfigApi.AppInfo | null) {
  16. this.appInfo = appInfo;
  17. updatePreferences({
  18. app: {
  19. watermark: appInfo?.openWatermark,
  20. name: appInfo?.webTitle,
  21. },
  22. });
  23. },
  24. async loadAppInfo() {
  25. const appInfo = await ConfigApi.getWebInfo();
  26. this.setAppInfo(appInfo);
  27. return appInfo;
  28. },
  29. },
  30. state: (): AccessState => ({
  31. appInfo: null,
  32. }),
  33. persist: {
  34. // 持久化
  35. pick: ['appInfo.webWatermark'],
  36. },
  37. });
  38. // 解决热更新问题
  39. const hot = import.meta.hot;
  40. if (hot) {
  41. hot.accept(acceptHMRUpdate(useAppStore, hot));
  42. }