@@ -75,11 +75,21 @@ export const refreshUserSubscriptionStatus = async (userId: string, { getSubscri
75
75
// N.B. In case a user has more than one subscription to the same plan,
76
76
// (e.g. newly configured plan or an old trial) make sure that the furthest expiry date is set.
77
77
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
+
78
86
// Set subscription specific expiry and status
79
87
claims . subscriptions [ subPlanId ] = {
80
88
expiry,
81
89
status : entry . subscription . status ,
90
+ ...donation
82
91
}
92
+
83
93
// Update overall subscription status
84
94
claims . subscriptionStatus = entry . subscription . status
85
95
claims . subscriptionExpiry = expiry
@@ -91,6 +101,7 @@ export const refreshUserSubscriptionStatus = async (userId: string, { getSubscri
91
101
92
102
93
103
setFeaturesFromSubscriptions ( claims ) ;
104
+ setFeaturesIfDonated ( claims ) ;
94
105
95
106
// N.B. Claims are always reset, not additive
96
107
// console.log(`setCustomUserClaims(${userId},${JSON.stringify(claims)})`)
@@ -112,6 +123,15 @@ const setFeaturesFromSubscriptions = (claims: Claims) => {
112
123
}
113
124
}
114
125
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
+
115
135
export const subscriptionToFeatures = new Map < UserPlan , UserFeature [ ] > ( [
116
136
[ "pro-yearly" , [ 'backup' , 'sync' ] ] ,
117
137
[ "pro-monthly" , [ 'backup' , 'sync' ] ] ,
0 commit comments