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;