Skip to content

chatShellTabConfig

解析与管理 Chat 壳层 Tab 配置(page-config displays.chatShell.tabs),含默认 Tab、运行时过滤、Tabbar 项构建与路由高亮匹配。

函数签名

typescript
const DEFAULT_CHAT_SHELL_TABS: ChatShellTabConfig[]

class ChatShellTabsConfigError extends Error

function parseChatShellTabsFromDisplays(displays: unknown): ChatShellTabConfig[]
function filterChatShellTabsForRuntime(
  tabs: ChatShellTabConfig[],
  opts: { isElectron: boolean },
): ChatShellTabConfig[]
function buildChatShellNavTabbarItems(tabs: ChatShellTabConfig[]): ChatShellNavTabbarItem[]
function buildChatShellMobileTabbarItems(tabs: ChatShellTabConfig[]): ChatShellTabbarItem[]
function resolveChatShellTabRouteTarget(tab: ChatShellTabConfig): { name: string } | { path: string } | null
function tabMatchesRoute(
  tab: ChatShellTabConfig,
  route: { name?: string | symbol | null; path?: string },
): boolean
function resolveActiveTabKey(
  tabs: ChatShellTabConfig[],
  route: { name?: string | symbol | null; path?: string },
): string
function isChatShellTabHideTabbar(tabs: ChatShellTabConfig[], activeKey: string): boolean
function findChatShellDesktopFooterTab(tabs: ChatShellTabConfig[]): ChatShellTabConfig | undefined
function isChatShellMineTab(tab: { key?: string; useMineAvatar?: boolean }): boolean
function toChatShellTabbarItem(tab: ChatShellTabConfig): ChatShellTabbarItem

类型定义见 zcw-shared/types/chat-shell-tab-config

参数

参数名类型必填说明
displaysunknownpage-config 的 displays 字段,需含 chatShell.tabs
tabsChatShellTabConfig[]已解析的 Tab 列表
opts.isElectronboolean是否 Electron 壳;为 false 时过滤 electronOnly Tab
route{ name?, path? }Vue Router 当前路由,用于高亮匹配
activeKeystring当前激活 Tab 的 key

返回值

类型说明
ChatShellTabConfig[]解析或过滤后的 Tab 配置
ChatShellTabbarItem[]供 Tabbar 组件渲染的项(含 icon、label 等)
stringresolveActiveTabKey 返回当前路由对应的 Tab key
booleantabMatchesRoute / isChatShellTabHideTabbar 等布尔判断

工作原理

  1. parseChatShellTabsFromDisplays:从 displays.chatShell.tabs 读取并归一化每项字段;缺失或无效时抛出 ChatShellTabsConfigError(运行时无默认兜底)。
  2. DEFAULT_CHAT_SHELL_TABS:管理端编辑 page-config 时的初始值与「恢复默认」数据源,终端运行时须从 displays 解析。
  3. filterChatShellTabsForRuntime:按 electronOnly 等运行时条件过滤 Tab。
  4. buildChatShellNavTabbarItems / buildChatShellMobileTabbarItems:分别生成宽屏侧栏与移动端底栏项;侧栏默认隐藏 label 并附带 tooltip。
  5. tabMatchesRoute / resolveActiveTabKey:按 routeNamerouteNamePrefixrelatedRouteNamesroute path 匹配当前 Tab,无硬编码 key。
  6. resolveChatShellTabRouteTarget:由 Tab 配置解析 Router 跳转目标(name 优先于 path)。

异常

错误类型触发条件错误信息
ChatShellTabsConfigErrordisplays 缺失或 tabs 为空/无效page-config displays 缺失…