const DRAFT_PREFIX = 'product-draft'; export type ProductDraftData = { productName: string; status: string; description: string; categoryIds: number[]; useSamePrice: boolean; sharedPrices: Array<{ type: string; price: number }>; variants: Array<{ id?: number | null; name: string; stock: number; reject_stock: number; retail_stock: number; photos?: Array<{ key: string }>; photo?: string; prices: Array<{ type: string; price: number }>; }>; }; function getKey( type: 'create' | 'edit', userId?: number, productId?: number, ): string { if (type === 'edit' && productId) { return `${DRAFT_PREFIX}-edit-${userId ?? 'anon'}-${productId}`; } return `${DRAFT_PREFIX}-create-${userId ?? 'anon'}`; } export function saveProductDraft( type: 'create' | 'edit', data: ProductDraftData, userId?: number, productId?: number, ): boolean { if (type !== 'create') { return false; } try { const key = getKey(type, userId, productId); localStorage.setItem(key, JSON.stringify(data)); return true; } catch { return false; } } export function loadProductDraft( type: 'create' | 'edit', userId?: number, productId?: number, ): ProductDraftData | null { try { const key = getKey(type, userId, productId); const raw = localStorage.getItem(key); if (!raw) { return null; } return JSON.parse(raw) as ProductDraftData; } catch { return null; } } export function clearProductDraft( type: 'create' | 'edit', userId?: number, productId?: number, ): void { try { const key = getKey(type, userId, productId); localStorage.removeItem(key); } catch { // ignore } }