import { events } from '../events'; import type { ISizeType } from '@/types'; import { COMPACT_STORAGE_KEY } from './constant'; import { SIZE_CHANGE } from '@/constant'; const sizeList = ['small', 'medium', 'large']; /** * 将当前页面的紧凑模式设置为指定的大小并存储到本地 * @param size */ export const setGlobalSize = (size: ISizeType) => { // 校验数据是否合法 if (!sizeList.includes(size)) { return; } let result: Record = {}; try { const data = localStorage.getItem(COMPACT_STORAGE_KEY); if (data) { result = JSON.parse(data); } if (typeof result !== 'object') { result = {}; } } catch { result = {}; } result[location.origin] = size; localStorage.setItem(COMPACT_STORAGE_KEY, JSON.stringify(result)); events.emit(SIZE_CHANGE, size); }; /** * 从本地数据获取当前页面的紧凑模式大小 */ export const getGlobalSize = () => { try { const data = localStorage.getItem(COMPACT_STORAGE_KEY); const result = JSON.parse(data); const size = result[location.origin]; // 校验数据是否合法 if (sizeList.includes(size)) { return size as ISizeType; } } catch { /* empty */ } return undefined; };