feat: Support 'free' subscription status in UI
This commit is contained in:
@@ -20,7 +20,7 @@ export interface Organization {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface Subscription {
|
export interface Subscription {
|
||||||
status: 'trial' | 'active' | 'paused' | 'expired' | 'cancelled'
|
status: 'trial' | 'active' | 'paused' | 'expired' | 'cancelled' | 'free'
|
||||||
plan: 'starter' | 'business' | 'enterprise'
|
plan: 'starter' | 'business' | 'enterprise'
|
||||||
trialEndsAt: string | null
|
trialEndsAt: string | null
|
||||||
subscriptionEndsAt: string | null
|
subscriptionEndsAt: string | null
|
||||||
@@ -47,13 +47,20 @@ export const useAuthStore = defineStore('auth', () => {
|
|||||||
const orgLogo = computed(() => organization.value?.logo_url || null)
|
const orgLogo = computed(() => organization.value?.logo_url || null)
|
||||||
|
|
||||||
// Subscription computed
|
// Subscription computed
|
||||||
|
const isFreeAccount = computed(() => subscription.value?.status === 'free')
|
||||||
const isTrialActive = computed(() => subscription.value?.status === 'trial' && (subscription.value?.daysRemaining ?? 0) > 0)
|
const isTrialActive = computed(() => subscription.value?.status === 'trial' && (subscription.value?.daysRemaining ?? 0) > 0)
|
||||||
const isSubscriptionActive = computed(() => subscription.value?.status === 'active' || isTrialActive.value)
|
const isSubscriptionActive = computed(() =>
|
||||||
|
subscription.value?.status === 'active' ||
|
||||||
|
subscription.value?.status === 'free' ||
|
||||||
|
isTrialActive.value
|
||||||
|
)
|
||||||
const isSubscriptionExpired = computed(() =>
|
const isSubscriptionExpired = computed(() =>
|
||||||
|
!isFreeAccount.value && (
|
||||||
subscription.value?.status === 'expired' ||
|
subscription.value?.status === 'expired' ||
|
||||||
subscription.value?.status === 'paused' ||
|
subscription.value?.status === 'paused' ||
|
||||||
(subscription.value?.status === 'trial' && (subscription.value?.daysRemaining ?? 0) <= 0)
|
(subscription.value?.status === 'trial' && (subscription.value?.daysRemaining ?? 0) <= 0)
|
||||||
)
|
)
|
||||||
|
)
|
||||||
const trialDaysRemaining = computed(() => subscription.value?.daysRemaining ?? null)
|
const trialDaysRemaining = computed(() => subscription.value?.daysRemaining ?? null)
|
||||||
const showTrialWarning = computed(() => isTrialActive.value && (trialDaysRemaining.value ?? 0) <= 7)
|
const showTrialWarning = computed(() => isTrialActive.value && (trialDaysRemaining.value ?? 0) <= 7)
|
||||||
|
|
||||||
@@ -173,6 +180,7 @@ export const useAuthStore = defineStore('auth', () => {
|
|||||||
fullName,
|
fullName,
|
||||||
orgName,
|
orgName,
|
||||||
orgLogo,
|
orgLogo,
|
||||||
|
isFreeAccount,
|
||||||
isTrialActive,
|
isTrialActive,
|
||||||
isSubscriptionActive,
|
isSubscriptionActive,
|
||||||
isSubscriptionExpired,
|
isSubscriptionExpired,
|
||||||
|
|||||||
Reference in New Issue
Block a user