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 ? (