feat(MED-131): display analyses options and add to cart

This commit is contained in:
2025-08-04 11:51:49 +03:00
parent 8c4df731aa
commit b665678dbb
5 changed files with 142 additions and 6 deletions

View File

@@ -0,0 +1,41 @@
import { cache } from 'react';
import { listProductTypes } from "@lib/data/products";
import { listRegions } from '@lib/data/regions';
import { getProductCategories } from '@lib/data/categories';
async function countryCodesLoader() {
const countryCodes = await listRegions().then((regions) =>
regions?.map((r) => r.countries?.map((c) => c.iso_2)).flat(),
);
return countryCodes ?? [];
}
export const loadCountryCodes = cache(countryCodesLoader);
async function productCategoriesLoader() {
const productCategories = await getProductCategories({ fields: "*products, *products.variants" });
return productCategories.product_categories ?? [];
}
export const loadProductCategories = cache(productCategoriesLoader);
async function productTypesLoader() {
const { productTypes } = await listProductTypes();
return productTypes ?? [];
}
export const loadProductTypes = cache(productTypesLoader);
async function analysesLoader() {
const [countryCodes, productCategories] = await Promise.all([
loadCountryCodes(),
loadProductCategories(),
]);
const countryCode = countryCodes[0]!;
const category = productCategories.find(({ metadata }) => metadata?.page === 'order-analysis');
return {
analyses: category?.products ?? [],
countryCode,
}
}
export const loadAnalyses = cache(analysesLoader);