From 91910ecbaeb9d7ecb08c9175686e1fb9ba865f53 Mon Sep 17 00:00:00 2001 From: gintil Date: Thu, 2 Jan 2025 07:22:06 -0500 Subject: [PATCH] Fix discord emails being used when getting subscriptions --- .../paddle-webhooks.service.ts | 4 +- .../supporter-subscriptions.controller.ts | 10 ++--- .../supporter-subscriptions.service.ts | 44 +++++++++++-------- .../features/supporters/supporters.service.ts | 10 ++--- .../src/features/users/users.service.ts | 2 +- 5 files changed, 38 insertions(+), 32 deletions(-) diff --git a/services/backend-api/src/features/supporter-subscriptions/paddle-webhooks.service.ts b/services/backend-api/src/features/supporter-subscriptions/paddle-webhooks.service.ts index 70cf867d9..12ce76670 100644 --- a/services/backend-api/src/features/supporter-subscriptions/paddle-webhooks.service.ts +++ b/services/backend-api/src/features/supporter-subscriptions/paddle-webhooks.service.ts @@ -206,11 +206,11 @@ export class PaddleWebhooksService { .select("discordUserId") .lean(); - const discordEmail = foundUser?.email; + const discordEmail = foundUser?.discordUserId; if (!discordEmail) { throw new Error( - `Could not find user with discord ID ${event.data.custom_data.userId} when updating subscription for customer ${event.data.customer_id}` + `Could not find user with user ID ${event.data.custom_data.userId} when updating subscription for customer ${event.data.customer_id}` ); } diff --git a/services/backend-api/src/features/supporter-subscriptions/supporter-subscriptions.controller.ts b/services/backend-api/src/features/supporter-subscriptions/supporter-subscriptions.controller.ts index 65b9c7c04..98de9f056 100644 --- a/services/backend-api/src/features/supporter-subscriptions/supporter-subscriptions.controller.ts +++ b/services/backend-api/src/features/supporter-subscriptions/supporter-subscriptions.controller.ts @@ -235,7 +235,7 @@ export class SupporterSubscriptionsController { const { id } = await this.supporterSubscriptionsService.getUpdatePaymentMethodTransaction( - { email } + { discordUserId } ); return { @@ -264,7 +264,7 @@ export class SupporterSubscriptionsController { const preview = await this.supporterSubscriptionsService.previewSubscriptionChange({ - email, + discordUserId, items: [ { priceId: priceId, @@ -297,7 +297,7 @@ export class SupporterSubscriptionsController { } await this.supporterSubscriptionsService.changeSubscription({ - email, + discordUserId, items: [ { priceId: priceId, @@ -324,7 +324,7 @@ export class SupporterSubscriptionsController { } await this.supporterSubscriptionsService.cancelSubscription({ - email, + discordUserId, }); } @@ -345,7 +345,7 @@ export class SupporterSubscriptionsController { } await this.supporterSubscriptionsService.resumeSubscription({ - email, + discordUserId, }); } } diff --git a/services/backend-api/src/features/supporter-subscriptions/supporter-subscriptions.service.ts b/services/backend-api/src/features/supporter-subscriptions/supporter-subscriptions.service.ts index 8984f827a..f3f8b0151 100644 --- a/services/backend-api/src/features/supporter-subscriptions/supporter-subscriptions.service.ts +++ b/services/backend-api/src/features/supporter-subscriptions/supporter-subscriptions.service.ts @@ -190,14 +190,14 @@ export class SupporterSubscriptionsService { } async previewSubscriptionChange({ - email, + discordUserId, items, }: { - email: string; + discordUserId: string; items: Array<{ priceId: string; quantity: number }>; }) { const { subscription } = - await this.supportersService.getSupporterSubscription({ email }); + await this.supportersService.getSupporterSubscription({ discordUserId }); const existingSubscriptionId = subscription?.id; @@ -267,14 +267,14 @@ export class SupporterSubscriptionsService { } async changeSubscription({ - email, + discordUserId, items, }: { - email: string; + discordUserId: string; items: Array<{ priceId: string; quantity: number }>; }) { - const { subscription, discordUserId } = - await this.supportersService.getSupporterSubscription({ email }); + const { subscription } = + await this.supportersService.getSupporterSubscription({ discordUserId }); const existingSubscriptionId = subscription?.id; @@ -302,7 +302,7 @@ export class SupporterSubscriptionsService { const currentUpdatedAt = subscription.updatedAt.getTime(); await this.pollForSubscriptionChange({ - email, + discordUserId, check: (sub) => { const latestUpdatedAt = sub.subscription?.updatedAt; @@ -319,9 +319,9 @@ export class SupporterSubscriptionsService { } } - async cancelSubscription({ email }: { email: string }) { + async cancelSubscription({ discordUserId }: { discordUserId: string }) { const { subscription } = - await this.supportersService.getSupporterSubscription({ email }); + await this.supportersService.getSupporterSubscription({ discordUserId }); const existingSubscriptionId = subscription?.id; @@ -342,7 +342,7 @@ export class SupporterSubscriptionsService { ); await this.pollForSubscriptionChange({ - email, + discordUserId, check: (sub) => { const cancellationDate = sub.subscription?.cancellationDate; @@ -351,9 +351,9 @@ export class SupporterSubscriptionsService { }); } - async resumeSubscription({ email }: { email: string }) { + async resumeSubscription({ discordUserId }: { discordUserId: string }) { const { subscription } = - await this.supportersService.getSupporterSubscription({ email }); + await this.supportersService.getSupporterSubscription({ discordUserId }); const existingSubscriptionId = subscription?.id; @@ -374,7 +374,7 @@ export class SupporterSubscriptionsService { ); await this.pollForSubscriptionChange({ - email, + discordUserId, check: (sub) => { const cancellationDate = sub.subscription?.cancellationDate; @@ -383,9 +383,13 @@ export class SupporterSubscriptionsService { }); } - async getUpdatePaymentMethodTransaction({ email }: { email: string }) { + async getUpdatePaymentMethodTransaction({ + discordUserId, + }: { + discordUserId: string; + }) { const { subscription } = - await this.supportersService.getSupporterSubscription({ email }); + await this.supportersService.getSupporterSubscription({ discordUserId }); const existingSubscriptionId = subscription?.id; @@ -406,10 +410,10 @@ export class SupporterSubscriptionsService { } async pollForSubscriptionChange({ - email, + discordUserId, check, }: { - email: string; + discordUserId: string; check: ( sub: Awaited> ) => boolean; @@ -420,7 +424,9 @@ export class SupporterSubscriptionsService { while (true) { const subscription = - await this.supportersService.getSupporterSubscription({ email }); + await this.supportersService.getSupporterSubscription({ + discordUserId, + }); if (check(subscription)) { break; diff --git a/services/backend-api/src/features/supporters/supporters.service.ts b/services/backend-api/src/features/supporters/supporters.service.ts index 75bdfa0f7..d6222825e 100644 --- a/services/backend-api/src/features/supporters/supporters.service.ts +++ b/services/backend-api/src/features/supporters/supporters.service.ts @@ -303,17 +303,17 @@ export class SupportersService { } async getSupporterSubscription({ - email, + billingEmail, discordUserId, }: - | { email: string; discordUserId?: string } - | { discordUserId: string; email?: string }) { + | { billingEmail: string; discordUserId?: string } + | { billingEmail?: string; discordUserId: string }) { let supporter: Supporter | null = null; - if (email) { + if (billingEmail) { supporter = await this.supporterModel .findOne({ - "paddleCustomer.email": email, + "paddleCustomer.email": billingEmail, }) .lean(); } else { diff --git a/services/backend-api/src/features/users/users.service.ts b/services/backend-api/src/features/users/users.service.ts index f8a3e10d5..0c133e2c8 100644 --- a/services/backend-api/src/features/users/users.service.ts +++ b/services/backend-api/src/features/users/users.service.ts @@ -207,7 +207,7 @@ export class UsersService { const { subscription, customer } = await this.supportersService.getSupporterSubscription({ - email: user.email, + discordUserId: user.discordUserId, }); let creditAvailableBalanceFormatted = "0";