prettier fix
This commit is contained in:
@@ -1,14 +1,17 @@
|
||||
import { cache } from 'react';
|
||||
|
||||
import { listProductTypes, listProducts } from "@lib/data/products";
|
||||
import { listRegions } from '@lib/data/regions';
|
||||
import { getAnalysisElementMedusaProductIds } from '@/utils/medusa-product';
|
||||
import { listProductTypes, listProducts } from '@lib/data/products';
|
||||
import { listRegions } from '@lib/data/regions';
|
||||
import type { StoreProduct } from '@medusajs/types';
|
||||
import { loadCurrentUserAccount } from './load-user-account';
|
||||
|
||||
import type { AccountWithParams } from '@kit/accounts/types/accounts';
|
||||
import type { AnalysisPackageWithVariant } from '@kit/shared/components/select-analysis-package';
|
||||
|
||||
import PersonalCode from '~/lib/utils';
|
||||
|
||||
import { loadCurrentUserAccount } from './load-user-account';
|
||||
|
||||
async function countryCodesLoader() {
|
||||
const countryCodes = await listRegions().then((regions) =>
|
||||
regions?.map((r) => r.countries?.map((c) => c.iso_2)).flat(),
|
||||
@@ -33,24 +36,25 @@ function userSpecificVariantLoader({
|
||||
throw new Error('Personal code not found');
|
||||
}
|
||||
|
||||
const { ageRange, gender: { value: gender } } = PersonalCode.parsePersonalCode(personalCode);
|
||||
const {
|
||||
ageRange,
|
||||
gender: { value: gender },
|
||||
} = PersonalCode.parsePersonalCode(personalCode);
|
||||
|
||||
return ({
|
||||
product,
|
||||
}: {
|
||||
product: StoreProduct;
|
||||
}) => {
|
||||
return ({ product }: { product: StoreProduct }) => {
|
||||
const variants = product.variants;
|
||||
if (!variants) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const variant = variants.find((v) => v.options?.every((o) => [ageRange, gender].includes(o.value)));
|
||||
const variant = variants.find((v) =>
|
||||
v.options?.every((o) => [ageRange, gender].includes(o.value)),
|
||||
);
|
||||
if (!variant) {
|
||||
return null;
|
||||
}
|
||||
return variant;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
async function analysisPackageElementsLoader({
|
||||
@@ -60,30 +64,46 @@ async function analysisPackageElementsLoader({
|
||||
analysisPackagesWithVariant: AnalysisPackageWithVariant[];
|
||||
countryCode: string;
|
||||
}) {
|
||||
const analysisElementMedusaProductIds = getAnalysisElementMedusaProductIds(analysisPackagesWithVariant);
|
||||
const analysisElementMedusaProductIds = getAnalysisElementMedusaProductIds(
|
||||
analysisPackagesWithVariant,
|
||||
);
|
||||
if (analysisElementMedusaProductIds.length === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const { response: { products } } = await listProducts({
|
||||
const {
|
||||
response: { products },
|
||||
} = await listProducts({
|
||||
countryCode,
|
||||
queryParams: {
|
||||
id: analysisElementMedusaProductIds,
|
||||
limit: 100,
|
||||
order: "title",
|
||||
order: 'title',
|
||||
},
|
||||
});
|
||||
|
||||
const standardPackage = analysisPackagesWithVariant.find(({ isStandard }) => isStandard);
|
||||
const standardPlusPackage = analysisPackagesWithVariant.find(({ isStandardPlus }) => isStandardPlus);
|
||||
const premiumPackage = analysisPackagesWithVariant.find(({ isPremium }) => isPremium);
|
||||
const standardPackage = analysisPackagesWithVariant.find(
|
||||
({ isStandard }) => isStandard,
|
||||
);
|
||||
const standardPlusPackage = analysisPackagesWithVariant.find(
|
||||
({ isStandardPlus }) => isStandardPlus,
|
||||
);
|
||||
const premiumPackage = analysisPackagesWithVariant.find(
|
||||
({ isPremium }) => isPremium,
|
||||
);
|
||||
if (!standardPackage || !standardPlusPackage || !premiumPackage) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const standardPackageAnalyses = getAnalysisElementMedusaProductIds([standardPackage]);
|
||||
const standardPlusPackageAnalyses = getAnalysisElementMedusaProductIds([standardPlusPackage]);
|
||||
const premiumPackageAnalyses = getAnalysisElementMedusaProductIds([premiumPackage]);
|
||||
const standardPackageAnalyses = getAnalysisElementMedusaProductIds([
|
||||
standardPackage,
|
||||
]);
|
||||
const standardPlusPackageAnalyses = getAnalysisElementMedusaProductIds([
|
||||
standardPlusPackage,
|
||||
]);
|
||||
const premiumPackageAnalyses = getAnalysisElementMedusaProductIds([
|
||||
premiumPackage,
|
||||
]);
|
||||
|
||||
return products.map(({ id, title, description }) => ({
|
||||
id,
|
||||
@@ -103,18 +123,20 @@ async function analysisPackagesWithVariantLoader({
|
||||
countryCode: string;
|
||||
}) {
|
||||
const productTypes = await loadProductTypes();
|
||||
const productType = productTypes.find(({ metadata }) => metadata?.handle === 'analysis-packages');
|
||||
const productType = productTypes.find(
|
||||
({ metadata }) => metadata?.handle === 'analysis-packages',
|
||||
);
|
||||
if (!productType) {
|
||||
return null;
|
||||
}
|
||||
const analysisPackagesResponse = await listProducts({
|
||||
countryCode,
|
||||
queryParams: { limit: 100, "type_id[0]": productType.id },
|
||||
queryParams: { limit: 100, 'type_id[0]': productType.id },
|
||||
});
|
||||
|
||||
const getVariant = userSpecificVariantLoader({ account });
|
||||
const analysisPackagesWithVariant = analysisPackagesResponse.response.products
|
||||
.reduce((acc, product) => {
|
||||
const analysisPackagesWithVariant =
|
||||
analysisPackagesResponse.response.products.reduce((acc, product) => {
|
||||
const variant = getVariant({ product });
|
||||
if (!variant) {
|
||||
return acc;
|
||||
@@ -124,14 +146,17 @@ async function analysisPackagesWithVariantLoader({
|
||||
{
|
||||
variant,
|
||||
variantId: variant.id,
|
||||
nrOfAnalyses: getAnalysisElementMedusaProductIds([{ ...product, variant }]).length,
|
||||
nrOfAnalyses: getAnalysisElementMedusaProductIds([
|
||||
{ ...product, variant },
|
||||
]).length,
|
||||
price: variant.calculated_price?.calculated_amount ?? 0,
|
||||
title: product.title,
|
||||
subtitle: product.subtitle,
|
||||
description: product.description,
|
||||
metadata: product.metadata,
|
||||
isStandard: product.metadata?.analysisPackageTier === 'standard',
|
||||
isStandardPlus: product.metadata?.analysisPackageTier === 'standard-plus',
|
||||
isStandardPlus:
|
||||
product.metadata?.analysisPackageTier === 'standard-plus',
|
||||
isPremium: product.metadata?.analysisPackageTier === 'premium',
|
||||
},
|
||||
];
|
||||
@@ -149,13 +174,23 @@ async function analysisPackagesLoader() {
|
||||
const countryCodes = await loadCountryCodes();
|
||||
const countryCode = countryCodes[0]!;
|
||||
|
||||
const analysisPackagesWithVariant = await analysisPackagesWithVariantLoader({ account, countryCode });
|
||||
const analysisPackagesWithVariant = await analysisPackagesWithVariantLoader({
|
||||
account,
|
||||
countryCode,
|
||||
});
|
||||
if (!analysisPackagesWithVariant) {
|
||||
return { analysisPackageElements: [], analysisPackages: [], countryCode };
|
||||
}
|
||||
|
||||
const analysisPackageElements = await analysisPackageElementsLoader({ analysisPackagesWithVariant, countryCode });
|
||||
const analysisPackageElements = await analysisPackageElementsLoader({
|
||||
analysisPackagesWithVariant,
|
||||
countryCode,
|
||||
});
|
||||
|
||||
return { analysisPackageElements, analysisPackages: analysisPackagesWithVariant, countryCode };
|
||||
return {
|
||||
analysisPackageElements,
|
||||
analysisPackages: analysisPackagesWithVariant,
|
||||
countryCode,
|
||||
};
|
||||
}
|
||||
export const loadAnalysisPackages = cache(analysisPackagesLoader);
|
||||
|
||||
Reference in New Issue
Block a user