61 lines
2.0 KiB
TypeScript
61 lines
2.0 KiB
TypeScript
// 统一处理 localStorage
|
|
|
|
import type { LayoutsConfig } from "@/layouts/config"
|
|
import type { TagView } from "@/pinia/stores/tags-view"
|
|
import type { ThemeName } from "@@/composables/useTheme"
|
|
import type { SidebarClosed, SidebarOpened } from "@@/constants/app-key"
|
|
import { CacheKey } from "@@/constants/cache-key"
|
|
|
|
// #region 系统布局配置
|
|
export function getLayoutsConfig() {
|
|
const json = localStorage.getItem(CacheKey.CONFIG_LAYOUT)
|
|
return json ? (JSON.parse(json) as LayoutsConfig) : null
|
|
}
|
|
export function setLayoutsConfig(settings: LayoutsConfig) {
|
|
localStorage.setItem(CacheKey.CONFIG_LAYOUT, JSON.stringify(settings))
|
|
}
|
|
export function removeLayoutsConfig() {
|
|
localStorage.removeItem(CacheKey.CONFIG_LAYOUT)
|
|
}
|
|
// #endregion
|
|
|
|
// #region 侧边栏状态
|
|
export function getSidebarStatus() {
|
|
return localStorage.getItem(CacheKey.SIDEBAR_STATUS)
|
|
}
|
|
export function setSidebarStatus(sidebarStatus: SidebarOpened | SidebarClosed) {
|
|
localStorage.setItem(CacheKey.SIDEBAR_STATUS, sidebarStatus)
|
|
}
|
|
// #endregion
|
|
|
|
// #region 正在应用的主题名称
|
|
export function getActiveThemeName() {
|
|
return localStorage.getItem(CacheKey.ACTIVE_THEME_NAME) as ThemeName | null
|
|
}
|
|
export function setActiveThemeName(themeName: ThemeName) {
|
|
localStorage.setItem(CacheKey.ACTIVE_THEME_NAME, themeName)
|
|
}
|
|
// #endregion
|
|
|
|
// #region 标签栏
|
|
export function getVisitedViews() {
|
|
const json = localStorage.getItem(CacheKey.VISITED_VIEWS)
|
|
return JSON.parse(json ?? "[]") as TagView[]
|
|
}
|
|
export function setVisitedViews(views: TagView[]) {
|
|
views.forEach((view) => {
|
|
// 删除不必要的属性,防止 JSON.stringify 处理到循环引用
|
|
delete view.matched
|
|
delete view.redirectedFrom
|
|
})
|
|
localStorage.setItem(CacheKey.VISITED_VIEWS, JSON.stringify(views))
|
|
}
|
|
export function getCachedViews() {
|
|
const json = localStorage.getItem(CacheKey.CACHED_VIEWS)
|
|
return JSON.parse(json ?? "[]") as string[]
|
|
}
|
|
export function setCachedViews(views: string[]) {
|
|
localStorage.setItem(CacheKey.CACHED_VIEWS, JSON.stringify(views))
|
|
}
|
|
// #endregion
|