Files
solidtime/resources/js/utils/billing.ts

73 lines
1.5 KiB
TypeScript

import { usePage } from '@inertiajs/vue3';
import { getDayJsInstance } from '@/packages/ui/src/utils/time';
export function isBillingActivated() {
const page = usePage<{
has_billing_extension: boolean;
}>();
return page.props.has_billing_extension;
}
export function isInvoicingActivated() {
const page = usePage<{
has_invoicing_extension: boolean;
}>();
return page.props.has_invoicing_extension;
}
export function isInTrial() {
const page = usePage<{
billing: {
has_trial: boolean;
};
}>();
return page.props.billing.has_trial;
}
export function daysLeftInTrial() {
const page = usePage<{
billing: {
trial_until: string;
};
}>();
return (
getDayJsInstance()(page.props.billing.trial_until).diff(getDayJsInstance()(), 'days') + 1
);
}
export function isBlocked() {
const page = usePage<{
billing: {
is_blocked: boolean;
};
}>();
return page.props.billing.is_blocked;
}
export function isFreePlan() {
return !hasActiveSubscription() && !isInTrial();
}
export function hasActiveSubscription() {
const page = usePage<{
billing: {
has_subscription: boolean;
};
}>();
return page.props.billing.has_subscription;
}
export function isAllowedToPerformPremiumAction() {
return (
!isBillingActivated() ||
(isBillingActivated() && hasActiveSubscription()) ||
(isBillingActivated() && isInTrial())
);
}