Skip to content

Commit 010a58b

Browse files
committed
feat: Refactor PaymentsPage to streamline subscription view rendering
- Introduced a dedicated function to determine which subscription view to display based on the subscription status, improving code readability and maintainability. - Updated the HomePageNavbar component to standardize quotation marks and enhance layout consistency. - Modified subscription tier limits to enable custom channel features for all tiers, enhancing user capabilities.
1 parent 26dca90 commit 010a58b

File tree

3 files changed

+272
-243
lines changed

3 files changed

+272
-243
lines changed

packages/app/app/studio/[organization]/(root)/payments/page.tsx

Lines changed: 69 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -6,55 +6,82 @@ import { ActiveSubscriptionView } from './components/ActiveSubscriptionView';
66
import { ExpiredSubscriptionView } from './components/ExpiredSubscriptionView';
77

88
export 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

Comments
 (0)