From 4007a06b9bf64693c3721d0cbc35b93c3bffd666 Mon Sep 17 00:00:00 2001 From: Alexander Ivanov Date: Thu, 4 Mar 2021 14:51:11 +0200 Subject: [PATCH] Make the revoke sync #171 --- .../business/revokeMemberships.ts | 32 ++++++++----------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/packages/firebase/functions/src/subscriptions/business/revokeMemberships.ts b/packages/firebase/functions/src/subscriptions/business/revokeMemberships.ts index a3a4aa77b..646a67c6f 100644 --- a/packages/firebase/functions/src/subscriptions/business/revokeMemberships.ts +++ b/packages/firebase/functions/src/subscriptions/business/revokeMemberships.ts @@ -12,7 +12,7 @@ const db = firestore(); * Revokes all membership that are expired, but not yet revoked */ export const revokeMemberships = async (): Promise => { - logger.info(`Beginning membership revoking for ${ new Date().getDate() }`); + logger.info(`Beginning membership revoking for ${ new Date().toDateString() }`); // Only get the subscription cancelled by user, because the subscriptions // canceled by payment failure should already be revoked @@ -21,8 +21,6 @@ export const revokeMemberships = async (): Promise => { .where('revoked', '==', false) .get() as firestore.QuerySnapshot; - const promiseArr: Promise[] = []; - for (const subscriptionSnap of subscriptions.docs) { const subscription = subscriptionSnap.data() as ISubscriptionEntity; @@ -36,20 +34,18 @@ export const revokeMemberships = async (): Promise => { } else { // If the subscription is pass it's due date: revoke it, If is not leave it be if (subscription.dueDate.toDate() < new Date()) { - // eslint-disable-next-line no-loop-func - promiseArr.push((async () => { - // Add try/catch so that if one revoke fails - // the others won't be canceled because of it - try { - logger.info(`Revoking membership for subscription with id ${ subscription.id }`); - - await revokeMembership(subscription); - - logger.info(`Revoked membership ${ subscription.id }`); - } catch (e) { - logger.warn('Error occurred while trying to revoke subscription', e); - } - })()); + // Add try/catch so that if one revoke fails + // the others won't be canceled because of it + try { + logger.info(`Revoking membership for subscription with id ${ subscription.id }`); + + // eslint-disable-next-line no-await-in-loop + await revokeMembership(subscription); + + logger.info(`Revoked membership ${ subscription.id }`); + } catch (e) { + logger.warn('Error occurred while trying to revoke subscription', e); + } } else { logger.debug('Skipping revoke for user canceled subscription', { subscription @@ -58,7 +54,5 @@ export const revokeMemberships = async (): Promise => { } } - await Promise.all(promiseArr); - logger.info(`Memberships revoked successfully`); }; \ No newline at end of file