Files
order_site/apps/frontend/src/utils/admin-worker-platform-tabs.ts
T

81 lines
3.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 接单平台(AdminWorkerPlatformPage)的 tab key 名单与切页缓存刷新映射。
*
* 抽成独立模块的原因:这些名单原先散落在页面组件里,且**同一份名单写了两遍**
* (isWorkerPlatformTab 与 loadActiveTabPreference 各一份)。新增 tab 时漏改的后果
* 不是报错、也不是白屏,而是**点了没反应**——changeTab() 会在 isWorkerPlatformTab()
* 返回 false 时直接 return,tab 渲染得出来却永远切不过去。
*
* 因此这里只保留唯一一份 WORKER_PLATFORM_TAB_KEYS,并配套单测守住
* 「登记了查询缓存却没登记合法 tab」这类漏改。
*/
/** 所有可作为 tab 的 key(新增 tab 只改这里)。 */
export const WORKER_PLATFORM_TAB_KEYS: readonly string[] = [
'orders',
'consignment-inventory',
'consignment-contacts',
'consignment-submissions',
'leaderboard',
'cancel-requests',
'feedbacks',
'after-sales',
'announcement',
'rules',
'order-service',
'consignment-config',
'product-match',
'categories',
'workers',
'finance',
'levels',
'notifications',
'risk-control',
]
/**
* 切到某个 tab 时需要失效的 react-query key,用于「切入即为最新状态」。
*
* 注意:这里的 key 未必都是 tab——例如 `hall-config` 是「杂项配置」tab 内部的一个区块。
* 未登记的 tab 切换时不额外失效任何查询(仍会刷新概览)。
*/
export const WORKER_PLATFORM_TAB_QUERY_KEYS: Record<string, string[][]> = {
'consignment-inventory': [['admin-consignment-inventories'], ['admin-consignment-stats']],
'consignment-contacts': [['admin-consignment-contacts']],
'consignment-submissions': [
['admin-consignment-submissions'],
['admin-consignment-submissions-pending-total'],
],
orders: [['admin-worker-platform-orders'], ['admin-worker-platform-summary']],
'cancel-requests': [['admin-work-order-cancel-requests']],
'after-sales': [['admin-after-sales-orders'], ['admin-after-sales-stats']],
feedbacks: [['admin-feedbacks']],
rules: [['admin-product-rules']],
'order-service': [
['admin-order-service-profiles'],
['admin-order-service-auto-publish-jobs'],
['admin-categories'],
],
'consignment-config': [['admin-consignment-profiles'], ['admin-categories']],
'product-match': [['admin-product-match']],
categories: [['admin-categories']],
workers: [['admin-workers'], ['admin-worker-users']],
leaderboard: [['admin-leaderboard']],
finance: [['admin-finance-settlements'], ['admin-finance-withdrawals']],
levels: [['admin-worker-levels']],
notifications: [['admin-notifications']],
announcement: [['admin-announcements']],
'hall-config': [['admin-hall-config']],
'risk-control': [['admin-worker-risk-overview'], ['admin-worker-risk-events']],
}
/**
* 只登记了查询缓存、但本身不是 tab 的 key。
* 目前只有 hall-config:它是「杂项配置」tab 内部的一个区块。
*/
export const WORKER_PLATFORM_NON_TAB_QUERY_KEYS: readonly string[] = ['hall-config']
export function isWorkerPlatformTab(tab: string | null): tab is string {
return WORKER_PLATFORM_TAB_KEYS.includes(String(tab || ''))
}