Files
medreport_mrb2b/app/home/(user)/_lib/server/load-tto-services.ts
2025-11-06 23:28:26 +02:00

49 lines
1.4 KiB
TypeScript

import { cache } from 'react';
import { getProductCategories } from '@lib/data';
import { ServiceCategory } from '../../_components/service-categories';
async function ttoServicesLoader() {
const response = await getProductCategories({
fields: '*products, is_active, metadata',
limit: 100,
});
const heroCategories = response.product_categories?.filter(
({ parent_category, metadata }) =>
parent_category?.handle === 'tto-categories' && metadata?.isHero,
);
const ttoCategories = response.product_categories?.filter(
({ parent_category, metadata }) =>
parent_category?.handle === 'tto-categories' && !metadata?.isHero,
);
return {
heroCategories:
heroCategories.map<Omit<ServiceCategory, 'countryCode'>>(
({ name, handle, metadata, description, products }) => ({
name,
handle,
color:
typeof metadata?.color === 'string' ? metadata.color : 'primary',
description,
products: products ?? [],
}),
) ?? [],
ttoCategories:
ttoCategories.map<Omit<ServiceCategory, 'countryCode'>>(
({ name, handle, metadata, description, products }) => ({
name,
handle,
color:
typeof metadata?.color === 'string' ? metadata.color : 'primary',
description,
products: products ?? [],
}),
) ?? [],
};
}
export const loadTtoServices = cache(ttoServicesLoader);