1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-10-18 20:09:08 +02:00
unleash.unleash/frontend/src/utils/instanceTrial.ts

49 lines
1.3 KiB
TypeScript
Raw Normal View History

import { parseISO, formatDistanceToNowStrict, isPast } from 'date-fns';
import { IInstanceStatus, InstanceState } from 'interfaces/instance';
import differenceInDays from 'date-fns/differenceInDays';
const TRIAL_EXPIRATION_WARNING_DAYS_THRESHOLD = 10;
export const hasTrialExpired = (
instanceStatus: IInstanceStatus | undefined
): boolean => {
const trialExpiry = parseTrialExpiryDate(instanceStatus);
if (!trialExpiry) {
return false;
}
return isPast(trialExpiry);
};
export const formatTrialExpirationWarning = (
instanceStatus: IInstanceStatus | undefined
): string | undefined => {
const trialExpiry = parseTrialExpiryDate(instanceStatus);
if (!trialExpiry || isPast(trialExpiry)) {
return;
}
if (
differenceInDays(trialExpiry, new Date()) <=
TRIAL_EXPIRATION_WARNING_DAYS_THRESHOLD
) {
return formatDistanceToNowStrict(trialExpiry, {
roundingMethod: 'floor',
});
}
};
const parseTrialExpiryDate = (
instanceStatus: IInstanceStatus | undefined
): Date | undefined => {
if (
instanceStatus &&
instanceStatus.state === InstanceState.TRIAL &&
instanceStatus.trialExpiry
) {
return parseISO(instanceStatus.trialExpiry);
}
};