trptk/lib/cartUtils.ts
2026-02-24 17:14:07 +01:00

32 lines
1 KiB
TypeScript

import { FORMAT_GROUPS } from "./variants";
import type { MedusaCart } from "./medusa";
/** All physical SKU suffixes (CD, SACD, LP). */
const PHYSICAL_SUFFIXES = new Set(
FORMAT_GROUPS.find((g) => g.slug === "physical")?.variants?.map((v) => v.suffix.toUpperCase()) ?? [],
);
/** All digital SKU suffixes. */
const DIGITAL_SUFFIXES = new Set(
FORMAT_GROUPS.find((g) => g.slug === "digital")
?.subgroups?.flatMap((sg) => sg.variants.map((v) => v.suffix.toUpperCase())) ?? [],
);
function skuSuffix(sku: string | null | undefined): string | null {
if (!sku) return null;
return sku.split("_").pop()?.toUpperCase() ?? null;
}
export function hasPhysicalItems(cart: MedusaCart): boolean {
return cart.items.some((item) => {
const suffix = skuSuffix(item.variant?.sku);
return suffix !== null && PHYSICAL_SUFFIXES.has(suffix);
});
}
export function hasDigitalItems(cart: MedusaCart): boolean {
return cart.items.some((item) => {
const suffix = skuSuffix(item.variant?.sku);
return suffix !== null && DIGITAL_SUFFIXES.has(suffix);
});
}