diff --git a/app/home/(user)/_components/dashboard.tsx b/app/home/(user)/_components/dashboard.tsx index 4d6d260..53722d9 100644 --- a/app/home/(user)/_components/dashboard.tsx +++ b/app/home/(user)/_components/dashboard.tsx @@ -84,7 +84,7 @@ const cards = ({ }, { title: 'dashboard:bmi', - description: bmiFromMetric(weight || 0, height || 0).toString(), + description: bmiFromMetric(weight || 0, height || 0)?.toString() ?? '-', icon: , iconBg: getBmiBackgroundColor(bmiStatus), }, diff --git a/lib/utils.ts b/lib/utils.ts index 392a129..36307b7 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -41,8 +41,12 @@ export function sortByDate( export const bmiFromMetric = (kg: number, cm: number) => { const m = cm / 100; - const bmi = kg / (m * m); - return bmi ? Math.round(bmi) : NaN; + const m2 = m * m; + if (m2 === 0) { + return null; + } + const bmi = kg / m2; + return !Number.isNaN(bmi) ? Math.round(bmi) : null; }; export function getBmiStatus( @@ -59,7 +63,9 @@ export function getBmiStatus( ) || null; const bmi = bmiFromMetric(params.weight, params.height); - if (!thresholdByAge || Number.isNaN(bmi)) return null; + if (!thresholdByAge || bmi === null) { + return null; + } if (bmi > thresholdByAge.obesity_min) return BmiCategory.OBESE; if (bmi > thresholdByAge.strong_min) return BmiCategory.VERY_OVERWEIGHT;