const DRAFT_PREFIX = 'raw-material-draft'; export type RawMaterialDraftData = { name: string; unit: string; isActive: boolean; variants: Array<{ id?: number | null; variant: string; price: number; stock: number; photo?: string; }>; }; function getKey( type: 'create' | 'edit', userId?: number, rawMaterialId?: number, ): string { if (type === 'edit' && rawMaterialId) { return `${DRAFT_PREFIX}-edit-${userId ?? 'anon'}-${rawMaterialId}`; } return `${DRAFT_PREFIX}-create-${userId ?? 'anon'}`; } export function saveRawMaterialDraft( type: 'create' | 'edit', data: RawMaterialDraftData, userId?: number, rawMaterialId?: number, ): boolean { if (type !== 'create') { return false; } try { const key = getKey(type, userId, rawMaterialId); localStorage.setItem(key, JSON.stringify(data)); return true; } catch { return false; } } export function loadRawMaterialDraft( type: 'create' | 'edit', userId?: number, rawMaterialId?: number, ): RawMaterialDraftData | null { try { const key = getKey(type, userId, rawMaterialId); const raw = localStorage.getItem(key); if (!raw) { return null; } return JSON.parse(raw) as RawMaterialDraftData; } catch { return null; } } export function clearRawMaterialDraft( type: 'create' | 'edit', userId?: number, rawMaterialId?: number, ): void { try { const key = getKey(type, userId, rawMaterialId); localStorage.removeItem(key); } catch { // ignore } }