46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
import { dayjsLocal } from './dayjs';
|
|
import { plural } from './format';
|
|
|
|
export function trialDays(_trialEndDate) {
|
|
let trialEndDate = dayjsLocal(_trialEndDate);
|
|
let today = dayjsLocal();
|
|
let diffHours = trialEndDate.diff(today, 'hours');
|
|
let endsIn = '';
|
|
if (diffHours < 0) {
|
|
let daysAgo = Math.floor(Math.abs(diffHours) / 24);
|
|
endsIn = `${daysAgo} ${plural(daysAgo, 'day', 'days')} ago`;
|
|
} else if (diffHours < 24) {
|
|
endsIn = `today`;
|
|
} else {
|
|
let days = Math.round(diffHours / 24) + 1;
|
|
endsIn = `in ${days} ${plural(days, 'day', 'days')}`;
|
|
}
|
|
if (trialEndDate.isAfter(today) || trialEndDate.isSame(today, 'day')) {
|
|
return `Trial ends ${endsIn}`;
|
|
} else {
|
|
return `Trial ended ${endsIn}`;
|
|
}
|
|
}
|
|
|
|
export function isTrialEnded(_trialEndDate) {
|
|
let trialEndDate = dayjsLocal(_trialEndDate);
|
|
let today = dayjsLocal();
|
|
return trialEndDate.isBefore(today, 'day');
|
|
}
|
|
|
|
export function validateSubdomain(subdomain) {
|
|
if (!subdomain) {
|
|
return 'Subdomain cannot be empty';
|
|
}
|
|
if (subdomain.length < 5) {
|
|
return 'Subdomain too short. Use 5 or more characters';
|
|
}
|
|
if (subdomain.length > 32) {
|
|
return 'Subdomain too long. Use 32 or less characters';
|
|
}
|
|
if (!subdomain.match(/^[a-z0-9][a-z0-9-]*[a-z0-9]$/)) {
|
|
return 'Subdomain contains invalid characters. Use lowercase characters, numbers and hyphens';
|
|
}
|
|
return null;
|
|
}
|