Files
cfw-autumn/shared/utils/billingUtils/invoicingUtils/descriptionUtils/featureUsageToDescription.ts
John Yeo 7ee92f4e88 wip
2025-12-22 10:45:49 +00:00

38 lines
1.0 KiB
TypeScript

import type { Feature } from "../../../../models/featureModels/featureModels";
import { getSingularAndPlural, numberWithCommas } from "../../../displayUtils";
import { roundUsageToNearestBillingUnit } from "../../usageUtils/roundUsageToNearestBillingUnit";
/**
* Generates base usage description for a feature.
* Examples: "150 credits", "1 user", "1,500 API calls"
*/
export const featureUsageToDescription = ({
feature,
usage,
billingUnits,
}: {
feature: Feature;
usage: number;
billingUnits: number;
}): string => {
const { singular, plural } = getSingularAndPlural({ feature });
// Ceil usage to nearest billing unit
const roundedUsage = roundUsageToNearestBillingUnit({
usage,
billingUnits,
});
const usageStr = numberWithCommas(roundedUsage);
// 1. If billing units is greater than 1, use plural
const featureName = usage === 1 ? singular : plural;
// billingUnits > 1 ? plural :
return `${usageStr} ${featureName}`;
// if (billingUnits === 1) {
// } else {
// return `${usageStr} x ${billingUnits} ${featureName}`;
// }
};