51f2b5fbfa
Drop SMS verification for HQ/partner proxy orders; keep form draft across product picker; hide whitelist-only products from partner catalog. Co-authored-by: Cursor <cursoragent@cursor.com>
57 lines
1.9 KiB
TypeScript
57 lines
1.9 KiB
TypeScript
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<ProxyOrderDraft>;
|
|
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 */
|
|
}
|
|
}
|