Add cancellation alert and refactor subscription handling

Added a 'Subscription Cancelled' alert in the billing component to improve visibility of subscription status. Also, removed an unnecessary check for target_account_id in billing-event-handler service as it lead to early exits. Fixed a typo in stripe-webhook-handler service for better consistency in naming conventions.
This commit is contained in:
giancarlo
2024-04-14 19:16:18 +08:00
parent 6271e6a4f7
commit d8e44772f2
4 changed files with 14 additions and 18 deletions

View File

@@ -46,6 +46,7 @@
"planCardLabel": "Manage your Plan",
"planPickerAlertErrorTitle": "Error requesting checkout",
"planPickerAlertErrorDescription": "There was an error requesting checkout. Please try again later.",
"subscriptionCancelled": "Subscription Cancelled",
"cancelSubscriptionDate": "Your subscription will be cancelled at the end of the period",
"status": {
"free": {

View File

@@ -3,6 +3,7 @@ import { BadgeCheck } from 'lucide-react';
import { BillingConfig, getProductPlanPairByVariantId } from '@kit/billing';
import { Database } from '@kit/supabase/database';
import { Alert, AlertDescription, AlertTitle } from '@kit/ui/alert';
import {
Card,
CardContent,
@@ -108,15 +109,18 @@ export function CurrentSubscriptionCard({
</If>
<If condition={subscription.cancel_at_period_end}>
<div className="flex flex-col space-y-0.5">
<span className="font-semibold">
<Trans i18nKey="billing:cancelSubscriptionDate" />
</span>
<Alert variant={'warning'}>
<AlertTitle>
<Trans i18nKey="billing:subscriptionCancelled" />
</AlertTitle>
<div className={'text-muted-foreground'}>
<span>{formatDate(subscription.period_ends_at ?? '', 'P')}</span>
</div>
</div>
<AlertDescription>
<Trans i18nKey="billing:cancelSubscriptionDate" />:
<span className={'ml-1'}>
{formatDate(subscription.period_ends_at ?? '', 'P')}
</span>
</AlertDescription>
</Alert>
</If>
<div className="flex flex-col space-y-0.5">

View File

@@ -68,15 +68,6 @@ export class BillingEventHandlerService {
logger.info(ctx, 'Processing subscription updated event ...');
if (!subscription.target_account_id) {
logger.info(
`No account id found in subscription. This event may have arrived before we created a subscription. Exiting...`,
subscription,
);
return;
}
// Handle the subscription updated event
// here we update the subscription in the database
const { error } = await client.rpc('upsert_subscription', subscription);

View File

@@ -231,7 +231,7 @@ export class StripeWebhookHandlerService
) {
const subscription = event.data.object;
const subscriptionId = subscription.id;
const accountId = subscription.metadata.account_id as string;
const accountId = subscription.metadata.accountId as string;
const payload = this.buildSubscriptionPayload({
customerId: subscription.customer as string,