Просмотр исходного кода

Add new flag to subscription dash context for PremiumFeaturesLink

GitOrigin-RevId: 55c3d00e0e0fdeb5a63cefac3f1c1428ce01cc9a
Thomas Mees 3 лет назад
Родитель
Сommit
2ca51e82cd

+ 7 - 0
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'
 

+ 1 - 1
services/web/frontend/js/features/subscription/components/dashboard/subscription-dashboard.tsx

@@ -38,7 +38,7 @@ function SubscriptionDashboard() {
             <ManagedPublishers />
             <GroupSubscriptionMemberships />
             <InstitutionMemberships />
-            {hasDisplayedSubscription && <PremiumFeaturesLink />}
+            <PremiumFeaturesLink />
             {!hasDisplayedSubscription &&
               (hasSubscription ? <ContactSupport /> : <FreePlan />)}
           </div>

+ 9 - 0
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,