From eb79d11f757097e7b0dd2c47ab9f1ef421b7163c Mon Sep 17 00:00:00 2001 From: panteliselef Date: Tue, 1 Jul 2025 17:47:38 +0300 Subject: [PATCH] chore(clerk-js,types): Convert date properties from number to Date in CommerceSubscriptionResource --- .changeset/funny-ducks-boil.md | 15 +++++++++ .../core/resources/CommerceSubscription.ts | 13 ++++++++ .../src/ui/components/Plans/PlanDetails.tsx | 5 +-- .../components/PricingTable/PricingTable.tsx | 2 +- .../PricingTable/PricingTableDefault.tsx | 4 +-- .../Subscriptions/SubscriptionsList.tsx | 2 +- .../src/ui/contexts/components/Plans.tsx | 31 +++++++++++-------- packages/types/src/commerce.ts | 13 ++++++++ packages/types/src/json.ts | 1 + 9 files changed, 67 insertions(+), 19 deletions(-) create mode 100644 .changeset/funny-ducks-boil.md diff --git a/.changeset/funny-ducks-boil.md b/.changeset/funny-ducks-boil.md new file mode 100644 index 00000000000..d037c7a1a7c --- /dev/null +++ b/.changeset/funny-ducks-boil.md @@ -0,0 +1,15 @@ +--- +'@clerk/clerk-js': minor +'@clerk/types': minor +--- + +Convert date properties from number to Date in CommerceSubscriptionResource +Deprecates fields of type `number` +- subscription.periodStart +- subscription.periodEnd +- subscription.canceledAt +Introduces fields of type `Date` +- subscription.periodStartDate +- subscription.periodEndDate +- subscription.canceledAtDate +- subscription.createdAt diff --git a/packages/clerk-js/src/core/resources/CommerceSubscription.ts b/packages/clerk-js/src/core/resources/CommerceSubscription.ts index fe63c472629..ac4d949fdf4 100644 --- a/packages/clerk-js/src/core/resources/CommerceSubscription.ts +++ b/packages/clerk-js/src/core/resources/CommerceSubscription.ts @@ -8,6 +8,8 @@ import type { DeletedObjectJSON, } from '@clerk/types'; +import { unixEpochToDate } from '@/utils/date'; + import { commerceMoneyFromJSON } from '../../utils'; import { BaseResource, CommercePlan, DeletedObject } from './internal'; @@ -17,6 +19,10 @@ export class CommerceSubscription extends BaseResource implements CommerceSubscr plan!: CommercePlan; planPeriod!: CommerceSubscriptionPlanPeriod; status!: CommerceSubscriptionStatus; + createdAt!: Date; + periodStartDate!: Date; + periodEndDate!: Date | null; + canceledAtDate!: Date | null; periodStart!: number; periodEnd!: number; canceledAt!: number | null; @@ -24,6 +30,7 @@ export class CommerceSubscription extends BaseResource implements CommerceSubscr credit?: { amount: CommerceMoney; }; + constructor(data: CommerceSubscriptionJSON) { super(); this.fromJSON(data); @@ -42,6 +49,12 @@ export class CommerceSubscription extends BaseResource implements CommerceSubscr this.periodStart = data.period_start; this.periodEnd = data.period_end; this.canceledAt = data.canceled_at; + + this.createdAt = unixEpochToDate(data.created_at); + this.periodStartDate = unixEpochToDate(data.period_start); + this.periodEndDate = data.period_end ? unixEpochToDate(data.period_end) : null; + this.canceledAtDate = data.canceled_at ? unixEpochToDate(data.canceled_at) : null; + this.amount = data.amount ? commerceMoneyFromJSON(data.amount) : undefined; this.credit = data.credit && data.credit.amount ? { amount: commerceMoneyFromJSON(data.credit.amount) } : undefined; return this; diff --git a/packages/clerk-js/src/ui/components/Plans/PlanDetails.tsx b/packages/clerk-js/src/ui/components/Plans/PlanDetails.tsx index 3a967e241ea..a64274a1c15 100644 --- a/packages/clerk-js/src/ui/components/Plans/PlanDetails.tsx +++ b/packages/clerk-js/src/ui/components/Plans/PlanDetails.tsx @@ -210,7 +210,7 @@ const PlanDetailsInternal = ({ {(!plan.isDefault && !isDefaultPlanImplicitlyActiveOrUpcoming) || !subscription ? ( {subscription ? ( - subscription.canceledAt ? ( + subscription.canceledAtDate ? (