// Author: fruit.com.cn import { ref } from 'vue' /** * 超管「代看创作者」的当前目标。 * * 目标走独立请求头 `X-Creator-Id`(不做查询参数),并且**只有带 `creator-center:impersonate` * 权限的账号带上它才生效** —— 创作者自己带这个头没有任何作用。 * 这里只负责"记住用户选了谁",权限判断在后端。 */ const STORAGE_KEY = 'creator-center:impersonate-id' /** * 代看目标按**字符串**存:创作者 id 是雪花 id(19 位), * 用 Number 过一遍会被 JS 四舍五入,请求头就会带一个不存在的 id(见 api-phase1.md §0)。 */ function readStored(): string | null { const raw = localStorage.getItem(STORAGE_KEY) const value = (raw || '').trim() return value && value !== '0' ? value : null } export const impersonateCreatorId = ref(readStored()) export function setImpersonateCreatorId(id: string | number | null) { const value = id === null || id === undefined || id === '' ? null : String(id) impersonateCreatorId.value = value if (value) localStorage.setItem(STORAGE_KEY, value) else localStorage.removeItem(STORAGE_KEY) } /** 创作者中心相关请求统一带上目标头(没选目标就不带) */ export function creatorCenterHeaders(): Record { return impersonateCreatorId.value ? { 'X-Creator-Id': String(impersonateCreatorId.value) } : {} }