Consolidate create and edit pages into single create pages with edit mode support. Remove obsolete catalog pages, history composables, and fix remaining code review issues. Include migration to relink orphaned custom fields. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
24 lines
927 B
TypeScript
24 lines
927 B
TypeScript
/**
|
|
* Shared API response helpers.
|
|
*
|
|
* Extracted from 10+ composables/components that each had an identical local
|
|
* copy of extractCollection (parsing hydra:member / member / data / array).
|
|
*/
|
|
|
|
export function extractTotal(payload: unknown, fallbackLength: number): number {
|
|
const p = payload as Record<string, unknown> | null
|
|
if (typeof p?.totalItems === 'number') return p.totalItems
|
|
if (typeof p?.['hydra:totalItems'] === 'number') return p['hydra:totalItems']
|
|
return fallbackLength
|
|
}
|
|
|
|
export function extractCollection<T = any>(payload: unknown): T[] {
|
|
if (Array.isArray(payload)) return payload as T[]
|
|
const p = payload as Record<string, unknown> | null
|
|
if (Array.isArray(p?.member)) return p!.member as T[]
|
|
if (Array.isArray(p?.['hydra:member'])) return p!['hydra:member'] as T[]
|
|
if (Array.isArray(p?.items)) return p!.items as T[]
|
|
if (Array.isArray(p?.data)) return p!.data as T[]
|
|
return []
|
|
}
|