修复客户订单列设置持久化并统一最新计费量展示
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
interface OrderColumnPreferences {
|
||||
visibleColumnKeys: string[]
|
||||
orderedColumnKeys: string[]
|
||||
}
|
||||
|
||||
function storageKey(ownerId: string) {
|
||||
return `cc:client:first-leg:order-columns:${ownerId}`
|
||||
}
|
||||
|
||||
export function readOrderColumnPreferences(ownerId: string, selectableKeys: string[], defaultVisibleKeys: string[]): OrderColumnPreferences {
|
||||
const defaults = { visibleColumnKeys: [...defaultVisibleKeys], orderedColumnKeys: [...selectableKeys] }
|
||||
if (!ownerId) return defaults
|
||||
try {
|
||||
const saved: unknown = JSON.parse(localStorage.getItem(storageKey(ownerId)) ?? 'null')
|
||||
if (!saved || typeof saved !== 'object') return defaults
|
||||
const preferences = saved as Partial<OrderColumnPreferences>
|
||||
if (!Array.isArray(preferences.visibleColumnKeys) || !Array.isArray(preferences.orderedColumnKeys)) return defaults
|
||||
const validKeys = (keys: unknown[]) => [...new Set(keys.filter((key): key is string => typeof key === 'string' && selectableKeys.includes(key)))]
|
||||
return {
|
||||
visibleColumnKeys: validKeys(preferences.visibleColumnKeys),
|
||||
orderedColumnKeys: [...new Set([...validKeys(preferences.orderedColumnKeys), ...selectableKeys])],
|
||||
}
|
||||
} catch {
|
||||
return defaults
|
||||
}
|
||||
}
|
||||
|
||||
export function saveOrderColumnPreferences(ownerId: string, preferences: OrderColumnPreferences) {
|
||||
if (!ownerId) return
|
||||
try {
|
||||
localStorage.setItem(storageKey(ownerId), JSON.stringify(preferences))
|
||||
} catch {
|
||||
// Column selection remains usable when browser storage is unavailable.
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user