Skip to content

useGlobalSettingsManager

登录用户维度的全局设置:启动拉取、周期刷新、版本去重与登出清理。

前置依赖

参数名类型说明
token.accessToken / isAuthenticatedRef须已登录才拉取
env.vueVue 运行时ref / computed / watchEffect / 生命周期
env.host定时器 + now周期刷新
env.storageuseStorage持久化 data + meta

函数签名

typescript
function useGlobalSettingsManager<T>(
  token: TokenReadonly,
  options: UseGlobalSettingsManagerOptions<T>,
  env: UseGlobalSettingsManagerEnvironment,
): UseGlobalSettingsManagerReturn<T>

interface UseGlobalSettingsManagerOptions<T> {
  fetchSettingsFn: (accessToken: string) => Promise<FetchSettingsResult<T>>
  storageKeys?: { data?: string; meta?: string }
  autoFetchOnMount?: boolean
  refreshIntervalMs?: number
}

参数

参数名类型必填说明
fetchSettingsFnfunction基于 accessToken 拉设置,可返回 version
autoFetchOnMountboolean默认 true
refreshIntervalMsnumber周期刷新间隔,不传则不轮询

返回值

字段说明
settings设置数据 Ref<T | null>
version / lastUpdatedAt版本与更新时间
refresh(force?)手动刷新;version 相同时可跳过写入
clear清空并 remove storage

工作原理

  1. 挂载水合 storage;已登录且 autoFetchOnMountrefresh
  2. refresh 合并 in-flight Promise,避免并发重复请求。
  3. 响应 version 与本地相同时不写 storage(减少无效更新)。
  4. watchEffect 监听 token:登出 clear;登录可重新拉取。
  5. 可选 refreshIntervalMs 定时 refresh

异常

请求失败写入 errorrefresh 返回 false。