@@ -6,55 +6,82 @@ import { ActiveSubscriptionView } from './components/ActiveSubscriptionView';
66import { ExpiredSubscriptionView } from './components/ExpiredSubscriptionView' ;
77
88export default function PaymentsPage ( ) {
9- const {
10- organization,
11- organizationId,
12- subscriptionStatus,
9+ const {
10+ organization,
11+ organizationId,
12+ subscriptionStatus,
1313 stagesStatus,
1414 daysLeft,
15- subscriptionTier
15+ subscriptionTier,
1616 } = useOrganizationContext ( ) ;
1717
18+ // Determine which view to show based on priority
19+ const renderSubscriptionView = ( ) => {
20+ // Priority 1: Active subscription - show current status
21+ if ( subscriptionStatus . isActive ) {
22+ return (
23+ < ActiveSubscriptionView
24+ organization = { organization }
25+ organizationId = { organizationId }
26+ daysLeft = { daysLeft }
27+ stagesStatus = { stagesStatus }
28+ />
29+ ) ;
30+ }
31+
32+ // Priority 2: Expired or failed subscription - show expired notice
33+ if ( subscriptionStatus . hasExpired || subscriptionStatus . isFailed ) {
34+ return (
35+ < ExpiredSubscriptionView
36+ organizationId = { organizationId }
37+ stagesStatus = { stagesStatus }
38+ />
39+ ) ;
40+ }
41+
42+ // Priority 3: Cancelled subscription - show expired notice with cancellation info
43+ if ( organization . subscriptionStatus === 'canceling' ) {
44+ return (
45+ < ExpiredSubscriptionView
46+ organizationId = { organizationId }
47+ stagesStatus = { stagesStatus }
48+ isCancelled = { true }
49+ subscriptionEndDate = {
50+ organization . subscriptionPeriodEnd
51+ ? new Date ( organization . subscriptionPeriodEnd )
52+ : undefined
53+ }
54+ />
55+ ) ;
56+ }
57+
58+ // Priority 4: No subscription or free tier - show pricing tiers
59+ if (
60+ organization . subscriptionStatus === 'none' ||
61+ ( organization . subscriptionTier === 'free' &&
62+ organization . subscriptionStatus !== 'active' )
63+ ) {
64+ return < NewSubscriptionView organizationId = { organizationId } /> ;
65+ }
66+
67+ // Priority 5: Any other case - show expired notice
68+ return (
69+ < ExpiredSubscriptionView
70+ organizationId = { organizationId }
71+ stagesStatus = { stagesStatus }
72+ subscriptionEndDate = {
73+ organization . subscriptionPeriodEnd
74+ ? new Date ( organization . subscriptionPeriodEnd )
75+ : undefined
76+ }
77+ />
78+ ) ;
79+ } ;
80+
1881 // Wrap all content in a scrollable container
1982 const content = (
2083 < div className = "h-full w-full overflow-y-auto" >
21- < div className = "min-h-full w-full" >
22- { /* If never had a subscription or has free tier, show pricing tiers */ }
23- { ( organization . subscriptionStatus === 'none' ||
24- ( organization . subscriptionTier === 'free' && organization . subscriptionStatus !== 'active' ) ) && (
25- < NewSubscriptionView organizationId = { organizationId } />
26- ) }
27-
28- { /* If subscription has expired or failed, show expired notice + pricing tiers */ }
29- { ( subscriptionStatus . hasExpired || subscriptionStatus . isFailed ) && (
30- < ExpiredSubscriptionView
31- organizationId = { organizationId }
32- stagesStatus = { stagesStatus }
33- />
34- ) }
35-
36- { /* If subscription is active - show current status + add resources card */ }
37- { subscriptionStatus . isActive && (
38- < ActiveSubscriptionView
39- organization = { organization }
40- organizationId = { organizationId }
41- daysLeft = { daysLeft }
42- stagesStatus = { stagesStatus }
43- />
44- ) }
45-
46- { /* Has had subscription before but not active - show expired notice + pricing tiers */ }
47- { ! subscriptionStatus . isActive && ! subscriptionStatus . hasExpired && ! subscriptionStatus . isFailed &&
48- organization . subscriptionStatus !== 'none' &&
49- ! ( organization . subscriptionTier === 'free' && organization . subscriptionStatus !== 'active' ) && (
50- < ExpiredSubscriptionView
51- organizationId = { organizationId }
52- stagesStatus = { stagesStatus }
53- isCancelled = { organization . subscriptionStatus === 'canceling' }
54- subscriptionEndDate = { organization . subscriptionPeriodEnd ? new Date ( organization . subscriptionPeriodEnd ) : undefined }
55- />
56- ) }
57- </ div >
84+ < div className = "min-h-full w-full" > { renderSubscriptionView ( ) } </ div >
5885 </ div >
5986 ) ;
6087
0 commit comments