import type { PartnerProxyDeliveryMode } from '@dukang/shared-types'; const PROXY_ORDER_DRAFT_KEY = 'partner_proxy_order_draft_v2'; export type ProxyOrderDraft = { phone: string; receiverName: string; regionCodes: string[]; addressDetail: string; productId: string; quantity: number; promoCodeId: string; deliveryMode: PartnerProxyDeliveryMode; autoReceive: boolean; }; export function saveProxyOrderDraft(draft: ProxyOrderDraft) { try { sessionStorage.setItem(PROXY_ORDER_DRAFT_KEY, JSON.stringify(draft)); } catch { /* ignore quota / private mode */ } } export function loadProxyOrderDraft(): ProxyOrderDraft | null { try { const raw = sessionStorage.getItem(PROXY_ORDER_DRAFT_KEY); if (!raw) return null; const parsed = JSON.parse(raw) as Partial; if (!parsed || typeof parsed !== 'object') return null; return { phone: typeof parsed.phone === 'string' ? parsed.phone : '', receiverName: typeof parsed.receiverName === 'string' ? parsed.receiverName : '', regionCodes: Array.isArray(parsed.regionCodes) ? parsed.regionCodes.filter((c): c is string => typeof c === 'string') : [], addressDetail: typeof parsed.addressDetail === 'string' ? parsed.addressDetail : '', productId: typeof parsed.productId === 'string' ? parsed.productId : '', quantity: typeof parsed.quantity === 'number' && parsed.quantity >= 1 ? parsed.quantity : 2, promoCodeId: typeof parsed.promoCodeId === 'string' ? parsed.promoCodeId : '', deliveryMode: parsed.deliveryMode === 'ON_SITE_PICKUP' ? 'ON_SITE_PICKUP' : 'ADDRESS', autoReceive: parsed.autoReceive === true, }; } catch { return null; } } export function clearProxyOrderDraft() { try { sessionStorage.removeItem(PROXY_ORDER_DRAFT_KEY); sessionStorage.removeItem('partner_proxy_order_draft_v1'); } catch { /* ignore */ } }