Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const _refreshUserSubscriptionStatus = async (userId: string) => {
chargebee.configure(getChargebeeOptions())
const claims: Claims = {
subscriptions: {},
lastSubscribed: null,
}
const subscriptionQuery = {
customer_id: userId,
'sort_by[asc]': 'created_at',
}
// Query the Chargebee API for this user's subscriptions, adding every active/in_trial sub to the claims object.
// any past subscription updates the lastSubscribed property to know whether a user has subscribed in the past.
await chargebee.subscription
.list(subscriptionQuery)
.request(function(error: any, result: any) {
if (error) {
return errorResponse('Provider', error)
} else {
for (const entry of result.list) {
if (
entry.subscription.status === 'active' ||
entry.subscription.status === 'in_trial'
) {
// TODO: verify `next_billing_at` is the right thing to refresh on and not `current_term_end`
claims.subscriptions[entry.subscription.plan_id] = {
refreshAt: entry.subscription.next_billing_at,
}
}
claims.lastSubscribed = entry.subscription.createdAt
new Promise((resolve, reject) => {
chargebee.subscription
.list({
"customer_id[is]": id
})
.request((error: any, result: any) => {
if (error) return reject(error);
resolve(result.list as any);
});
});
reactivateSubscription(subscriptionId, cb) {
chargebee.subscription.reactivate(subscriptionId).request(cb);
}
new Promise((resolve, reject) => {
chargebee.subscription
.retrieve(sourceId)
.request((error: any, result: any) => {
if (error) return reject(error);
resolve(result as any);
});
});