diff --git a/services/web/frontend/js/features/subscription/components/dashboard/premium-features-link.tsx b/services/web/frontend/js/features/subscription/components/dashboard/premium-features-link.tsx
index f57c0b6a78..b63186b58a 100644
--- a/services/web/frontend/js/features/subscription/components/dashboard/premium-features-link.tsx
+++ b/services/web/frontend/js/features/subscription/components/dashboard/premium-features-link.tsx
@@ -1,8 +1,15 @@
import { Trans } from 'react-i18next'
import getMeta from '../../../../utils/meta'
import * as eventTracking from '../../../../infrastructure/event-tracking'
+import { useSubscriptionDashboardContext } from '../../context/subscription-dashboard-context'
function PremiumFeaturesLink() {
+ const { hasValidActiveSubscription } = useSubscriptionDashboardContext()
+
+ if (!hasValidActiveSubscription) {
+ return null
+ }
+
const featuresPageVariant =
getMeta('ol-splitTestVariants')?.['features-page'] || 'default'
diff --git a/services/web/frontend/js/features/subscription/components/dashboard/subscription-dashboard.tsx b/services/web/frontend/js/features/subscription/components/dashboard/subscription-dashboard.tsx
index f827d3374d..c363fcb4ed 100644
--- a/services/web/frontend/js/features/subscription/components/dashboard/subscription-dashboard.tsx
+++ b/services/web/frontend/js/features/subscription/components/dashboard/subscription-dashboard.tsx
@@ -38,7 +38,7 @@ function SubscriptionDashboard() {
- {hasDisplayedSubscription && }
+
{!hasDisplayedSubscription &&
(hasSubscription ? : )}
diff --git a/services/web/frontend/js/features/subscription/context/subscription-dashboard-context.tsx b/services/web/frontend/js/features/subscription/context/subscription-dashboard-context.tsx
index f3bb0acceb..f3ab2f3048 100644
--- a/services/web/frontend/js/features/subscription/context/subscription-dashboard-context.tsx
+++ b/services/web/frontend/js/features/subscription/context/subscription-dashboard-context.tsx
@@ -40,6 +40,7 @@ type SubscriptionDashboardContextValue = {
planCode?: string
) => void
hasDisplayedSubscription: boolean
+ hasValidActiveSubscription: boolean
institutionMemberships?: Institution[]
managedGroupSubscriptions: ManagedGroupSubscription[]
memberGroupSubscriptions: MemberGroupSubscription[]
@@ -132,6 +133,12 @@ export function SubscriptionDashboardProvider({
managedPublishers?.length > 0
)
+ const hasValidActiveSubscription = Boolean(
+ ['active', 'canceled'].includes(personalSubscription?.recurly?.state) ||
+ institutionMemberships?.length > 0 ||
+ memberGroupSubscriptions?.length > 0
+ )
+
useEffect(() => {
if (!isRecurlyLoaded()) {
setRecurlyLoadError(true)
@@ -243,6 +250,7 @@ export function SubscriptionDashboardProvider({
handleCloseModal,
handleOpenModal,
hasDisplayedSubscription,
+ hasValidActiveSubscription,
institutionMemberships,
managedGroupSubscriptions,
memberGroupSubscriptions,
@@ -277,6 +285,7 @@ export function SubscriptionDashboardProvider({
handleCloseModal,
handleOpenModal,
hasDisplayedSubscription,
+ hasValidActiveSubscription,
institutionMemberships,
managedGroupSubscriptions,
memberGroupSubscriptions,