@@ -75,11 +75,21 @@ export const refreshUserSubscriptionStatus = async (userId: string, { getSubscri
7575 // N.B. In case a user has more than one subscription to the same plan,
7676 // (e.g. newly configured plan or an old trial) make sure that the furthest expiry date is set.
7777 if ( existingSubscription == null || existingSubscription . expiry < expiry ) {
78+
79+ const donationAddOnObject = entry . subscription ?. addons ?. find (
80+ ( addOn : any ) => addOn . id === 'pioneer'
81+ )
82+ const donation = ( donationAddOnObject ) ? {
83+ donation : donationAddOnObject . unit_price * donationAddOnObject . amount
84+ } : { }
85+
7886 // Set subscription specific expiry and status
7987 claims . subscriptions [ subPlanId ] = {
8088 expiry,
8189 status : entry . subscription . status ,
90+ ...donation
8291 }
92+
8393 // Update overall subscription status
8494 claims . subscriptionStatus = entry . subscription . status
8595 claims . subscriptionExpiry = expiry
@@ -91,6 +101,7 @@ export const refreshUserSubscriptionStatus = async (userId: string, { getSubscri
91101
92102
93103 setFeaturesFromSubscriptions ( claims ) ;
104+ setFeaturesIfDonated ( claims ) ;
94105
95106 // N.B. Claims are always reset, not additive
96107 // console.log(`setCustomUserClaims(${userId},${JSON.stringify(claims)})`)
@@ -112,6 +123,15 @@ const setFeaturesFromSubscriptions = (claims: Claims) => {
112123 }
113124}
114125
126+ const setFeaturesIfDonated = ( claims : Claims ) => {
127+ for ( const subscriptionKey of Object . keys ( claims . subscriptions ) ) {
128+ const subscription = claims . subscriptions [ subscriptionKey as UserPlan ]
129+ if ( subscription && ( subscription ?. donation ?? 0 ) > 0 ) {
130+ claims . features . beta = { expiry : subscription . expiry }
131+ }
132+ }
133+ }
134+
115135export const subscriptionToFeatures = new Map < UserPlan , UserFeature [ ] > ( [
116136 [ "pro-yearly" , [ 'backup' , 'sync' ] ] ,
117137 [ "pro-monthly" , [ 'backup' , 'sync' ] ] ,
0 commit comments