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:
@@ -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": {
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user