Skip to content

Commit 23948dc

Browse files
chore(clerk-js,shared): Removal of experimental getSubscriptions (#6738)
Co-authored-by: panteliselef <[email protected]>
1 parent 2768e83 commit 23948dc

File tree

8 files changed

+21
-143
lines changed

8 files changed

+21
-143
lines changed

.changeset/chilly-dots-heal.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@clerk/clerk-js': minor
3+
'@clerk/types': minor
4+
---
5+
6+
[Billing Beta] Removal of Billing experimental methods: `organization.getSubscriptions()` and `billing.getSubscriptions()`

.changeset/upset-masks-ask.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
'@clerk/shared': minor
3+
'@clerk/astro': minor
4+
'@clerk/chrome-extension': minor
5+
'@clerk/clerk-expo': minor
6+
'@clerk/nextjs': minor
7+
'@clerk/clerk-react': minor
8+
'@clerk/react-router': minor
9+
'@clerk/remix': minor
10+
'@clerk/tanstack-react-start': minor
11+
---
12+
13+
[Billing Beta] Drop experimental `subscriptions` property from params of `useOrganization()`. Use [`useSubscription()`](https://clerk.com/docs/nextjs/hooks/use-subscription) instead.

.typedoc/__tests__/__snapshots__/file-structure.test.ts.snap

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ exports[`Typedoc output > should have a deliberate file structure 1`] = `
7575
"types/get-plans-params.mdx",
7676
"types/get-statements-params.mdx",
7777
"types/get-subscription-params.mdx",
78-
"types/get-subscriptions-params.mdx",
7978
"types/get-token.mdx",
8079
"types/id-selectors.mdx",
8180
"types/initialize-payment-source-params.mdx",

packages/clerk-js/src/core/modules/commerce/CommerceBilling.ts

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,13 @@ import type {
88
CommercePlanResource,
99
CommerceStatementJSON,
1010
CommerceStatementResource,
11-
CommerceSubscriptionItemJSON,
12-
CommerceSubscriptionItemResource,
1311
CommerceSubscriptionJSON,
1412
CommerceSubscriptionResource,
1513
CreateCheckoutParams,
1614
GetPaymentAttemptsParams,
1715
GetPlansParams,
1816
GetStatementsParams,
1917
GetSubscriptionParams,
20-
GetSubscriptionsParams,
2118
} from '@clerk/types';
2219

2320
import { convertPageToOffsetSearchParams } from '../../../utils/convertPageToOffsetSearchParams';
@@ -28,7 +25,6 @@ import {
2825
CommercePlan,
2926
CommerceStatement,
3027
CommerceSubscription,
31-
CommerceSubscriptionItem,
3228
} from '../../resources/internal';
3329

3430
export class CommerceBilling implements CommerceBillingNamespace {
@@ -65,26 +61,6 @@ export class CommerceBilling implements CommerceBillingNamespace {
6561
}).then(res => new CommerceSubscription(res?.response as CommerceSubscriptionJSON));
6662
};
6763

68-
getSubscriptions = async (
69-
params: GetSubscriptionsParams,
70-
): Promise<ClerkPaginatedResponse<CommerceSubscriptionItemResource>> => {
71-
const { orgId, ...rest } = params;
72-
73-
return await BaseResource._fetch({
74-
path: orgId ? `/organizations/${orgId}/commerce/subscriptions` : `/me/commerce/subscriptions`,
75-
method: 'GET',
76-
search: convertPageToOffsetSearchParams(rest),
77-
}).then(res => {
78-
const { data: subscriptions, total_count } =
79-
res?.response as unknown as ClerkPaginatedResponse<CommerceSubscriptionItemJSON>;
80-
81-
return {
82-
total_count,
83-
data: subscriptions.map(subscription => new CommerceSubscriptionItem(subscription)),
84-
};
85-
});
86-
};
87-
8864
getStatements = async (params: GetStatementsParams): Promise<ClerkPaginatedResponse<CommerceStatementResource>> => {
8965
const { orgId, ...rest } = params;
9066

packages/clerk-js/src/core/resources/Organization.ts

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@ import type {
22
AddMemberParams,
33
ClerkPaginatedResponse,
44
ClerkResourceReloadParams,
5-
CommerceSubscriptionItemJSON,
6-
CommerceSubscriptionItemResource,
75
CreateOrganizationParams,
86
GetDomainsParams,
97
GetInvitationsParams,
108
GetMembershipRequestParams,
119
GetMemberships,
1210
GetRolesParams,
13-
GetSubscriptionsParams,
1411
InviteMemberParams,
1512
InviteMembersParams,
1613
OrganizationDomainJSON,
@@ -32,7 +29,7 @@ import type {
3229
import { convertPageToOffsetSearchParams } from '../../utils/convertPageToOffsetSearchParams';
3330
import { unixEpochToDate } from '../../utils/date';
3431
import { addPaymentSource, getPaymentSources, initializePaymentSource } from '../modules/commerce';
35-
import { BaseResource, CommerceSubscriptionItem, OrganizationInvitation, OrganizationMembership } from './internal';
32+
import { BaseResource, OrganizationInvitation, OrganizationMembership } from './internal';
3633
import { OrganizationDomain } from './OrganizationDomain';
3734
import { OrganizationMembershipRequest } from './OrganizationMembershipRequest';
3835
import { Role } from './Role';
@@ -233,24 +230,6 @@ export class Organization extends BaseResource implements OrganizationResource {
233230
}).then(res => new OrganizationMembership(res?.response as OrganizationMembershipJSON));
234231
};
235232

236-
getSubscriptions = async (
237-
getSubscriptionsParams?: GetSubscriptionsParams,
238-
): Promise<ClerkPaginatedResponse<CommerceSubscriptionItemResource>> => {
239-
return await BaseResource._fetch({
240-
path: `/organizations/${this.id}/commerce/subscriptions`,
241-
method: 'GET',
242-
search: convertPageToOffsetSearchParams(getSubscriptionsParams),
243-
}).then(res => {
244-
const { data: subscriptions, total_count } =
245-
res?.response as unknown as ClerkPaginatedResponse<CommerceSubscriptionItemJSON>;
246-
247-
return {
248-
total_count,
249-
data: subscriptions.map(subscription => new CommerceSubscriptionItem(subscription)),
250-
};
251-
});
252-
};
253-
254233
destroy = async (): Promise<void> => {
255234
return this._baseDelete();
256235
};

packages/shared/src/react/hooks/useOrganization.tsx

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
/* eslint-disable jsdoc/require-description-complete-sentence */
22
import type {
33
ClerkPaginatedResponse,
4-
CommerceSubscriptionItemResource,
54
GetDomainsParams,
65
GetInvitationsParams,
76
GetMembershipRequestParams,
87
GetMembersParams,
9-
GetSubscriptionsParams,
108
OrganizationDomainResource,
119
OrganizationInvitationResource,
1210
OrganizationMembershipRequestResource,
@@ -66,16 +64,6 @@ export type UseOrganizationParams = {
6664
* </ul>
6765
*/
6866
invitations?: true | PaginatedHookConfig<GetInvitationsParams>;
69-
/**
70-
* @experimental This is an experimental API for the Billing feature that is available under a public beta, and the API is subject to change.
71-
* If set to `true`, all default properties will be used.<br />
72-
* Otherwise, accepts an object with the following optional properties:
73-
* <ul>
74-
* <li>`orgId`: A string that filters the subscriptions by the provided organization ID.</li>
75-
* <li>Any of the properties described in [Shared properties](#shared-properties).</li>
76-
* </ul>
77-
*/
78-
subscriptions?: true | PaginatedHookConfig<GetSubscriptionsParams>;
7967
};
8068

8169
/**
@@ -111,11 +99,6 @@ export type UseOrganizationReturn<T extends UseOrganizationParams> =
11199
* Includes a paginated list of the organization's invitations.
112100
*/
113101
invitations: PaginatedResourcesWithDefault<OrganizationInvitationResource>;
114-
/**
115-
* @experimental This is an experimental API for the Billing feature that is available under a public beta, and the API is subject to change.
116-
* Includes a paginated list of the organization's subscriptions.
117-
*/
118-
subscriptions: PaginatedResourcesWithDefault<CommerceSubscriptionItemResource>;
119102
}
120103
| {
121104
isLoaded: true;
@@ -125,7 +108,6 @@ export type UseOrganizationReturn<T extends UseOrganizationParams> =
125108
membershipRequests: PaginatedResourcesWithDefault<OrganizationMembershipRequestResource>;
126109
memberships: PaginatedResourcesWithDefault<OrganizationMembershipResource>;
127110
invitations: PaginatedResourcesWithDefault<OrganizationInvitationResource>;
128-
subscriptions: PaginatedResourcesWithDefault<CommerceSubscriptionItemResource>;
129111
}
130112
| {
131113
isLoaded: boolean;
@@ -147,10 +129,6 @@ export type UseOrganizationReturn<T extends UseOrganizationParams> =
147129
OrganizationInvitationResource,
148130
T['invitations'] extends { infinite: true } ? true : false
149131
> | null;
150-
subscriptions: PaginatedResources<
151-
CommerceSubscriptionItemResource,
152-
T['subscriptions'] extends { infinite: true } ? true : false
153-
> | null;
154132
};
155133

156134
const undefinedPaginatedResource = {
@@ -300,7 +278,6 @@ export function useOrganization<T extends UseOrganizationParams>(params?: T): Us
300278
membershipRequests: membershipRequestsListParams,
301279
memberships: membersListParams,
302280
invitations: invitationsListParams,
303-
subscriptions: subscriptionsListParams,
304281
} = params || {};
305282

306283
useAssertWrappedByClerkProvider('useOrganization');
@@ -341,13 +318,6 @@ export function useOrganization<T extends UseOrganizationParams>(params?: T): Us
341318
infinite: false,
342319
});
343320

344-
const subscriptionsSafeValues = useWithSafeValues(subscriptionsListParams, {
345-
initialPage: 1,
346-
pageSize: 10,
347-
keepPreviousData: false,
348-
infinite: false,
349-
});
350-
351321
const clerk = useClerkInstanceContext();
352322

353323
clerk.telemetry?.record(eventMethodCalled('useOrganization'));
@@ -389,15 +359,6 @@ export function useOrganization<T extends UseOrganizationParams>(params?: T): Us
389359
status: invitationsSafeValues.status,
390360
};
391361

392-
const subscriptionsParams =
393-
typeof subscriptionsListParams === 'undefined'
394-
? undefined
395-
: {
396-
initialPage: subscriptionsSafeValues.initialPage,
397-
pageSize: subscriptionsSafeValues.pageSize,
398-
orgId: organization?.id,
399-
};
400-
401362
const domains = usePagesOrInfinite<GetDomainsParams, ClerkPaginatedResponse<OrganizationDomainResource>>(
402363
{
403364
...domainParams,
@@ -463,25 +424,6 @@ export function useOrganization<T extends UseOrganizationParams>(params?: T): Us
463424
},
464425
);
465426

466-
const subscriptions = usePagesOrInfinite<
467-
GetSubscriptionsParams,
468-
ClerkPaginatedResponse<CommerceSubscriptionItemResource>
469-
>(
470-
{
471-
...subscriptionsParams,
472-
},
473-
organization?.getSubscriptions,
474-
{
475-
keepPreviousData: subscriptionsSafeValues.keepPreviousData,
476-
infinite: subscriptionsSafeValues.infinite,
477-
enabled: !!subscriptionsParams,
478-
},
479-
{
480-
type: 'subscriptions',
481-
organizationId: organization?.id,
482-
},
483-
);
484-
485427
if (organization === undefined) {
486428
return {
487429
isLoaded: false,
@@ -491,7 +433,6 @@ export function useOrganization<T extends UseOrganizationParams>(params?: T): Us
491433
membershipRequests: undefinedPaginatedResource,
492434
memberships: undefinedPaginatedResource,
493435
invitations: undefinedPaginatedResource,
494-
subscriptions: undefinedPaginatedResource,
495436
};
496437
}
497438

@@ -504,7 +445,6 @@ export function useOrganization<T extends UseOrganizationParams>(params?: T): Us
504445
membershipRequests: null,
505446
memberships: null,
506447
invitations: null,
507-
subscriptions: null,
508448
};
509449
}
510450

@@ -518,7 +458,6 @@ export function useOrganization<T extends UseOrganizationParams>(params?: T): Us
518458
membershipRequests: undefinedPaginatedResource,
519459
memberships: undefinedPaginatedResource,
520460
invitations: undefinedPaginatedResource,
521-
subscriptions: undefinedPaginatedResource,
522461
};
523462
}
524463

@@ -531,6 +470,5 @@ export function useOrganization<T extends UseOrganizationParams>(params?: T): Us
531470
membershipRequests,
532471
memberships,
533472
invitations,
534-
subscriptions,
535473
};
536474
}

packages/types/src/commerce.ts

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -69,19 +69,6 @@ export interface CommerceBillingNamespace {
6969
*/
7070
getSubscription: (params: GetSubscriptionParams) => Promise<CommerceSubscriptionResource>;
7171

72-
/**
73-
* @deprecated Use `getSubscription` to fetch a single subscription with its items
74-
* @experimental This is an experimental API for the Billing feature that is available under a public beta, and the API is subject to change.
75-
* It is advised to pin the SDK version and the clerk-js version to a specific version to avoid breaking changes.
76-
* @example
77-
* ```tsx
78-
* <ClerkProvider clerkJsVersion="x.x.x" />
79-
* ```
80-
*/
81-
getSubscriptions: (
82-
params: GetSubscriptionsParams,
83-
) => Promise<ClerkPaginatedResponse<CommerceSubscriptionItemResource>>;
84-
8572
/**
8673
* @experimental This is an experimental API for the Billing feature that is available under a public beta, and the API is subject to change.
8774
* It is advised to pin the SDK version and the clerk-js version to a specific version to avoid breaking changes.
@@ -792,16 +779,6 @@ export interface CommerceStatementGroup {
792779
items: CommercePaymentResource[];
793780
}
794781

795-
/**
796-
* @experimental This is an experimental API for the Billing feature that is available under a public beta, and the API is subject to change.
797-
* It is advised to pin the SDK version and the clerk-js version to a specific version to avoid breaking changes.
798-
* @example
799-
* ```tsx
800-
* <ClerkProvider clerkJsVersion="x.x.x" />
801-
* ```
802-
*/
803-
export type GetSubscriptionsParams = WithOptionalOrgType<ClerkPaginationParams>;
804-
805782
/**
806783
* @experimental This is an experimental API for the Billing feature that is available under a public beta, and the API is subject to change.
807784
* It is advised to pin the SDK version and the clerk-js version to a specific version to avoid breaking changes.

packages/types/src/organization.ts

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
import type {
2-
CommercePaymentSourceMethods,
3-
CommerceSubscriptionItemResource,
4-
GetSubscriptionsParams,
5-
} from './commerce';
1+
import type { CommercePaymentSourceMethods } from './commerce';
62
import type { OrganizationDomainResource, OrganizationEnrollmentMode } from './organizationDomain';
73
import type { OrganizationInvitationResource, OrganizationInvitationStatus } from './organizationInvitation';
84
import type { OrganizationCustomRoleKey, OrganizationMembershipResource } from './organizationMembership';
@@ -60,12 +56,6 @@ export interface OrganizationResource extends ClerkResource, CommercePaymentSour
6056
getMembershipRequests: (
6157
params?: GetMembershipRequestParams,
6258
) => Promise<ClerkPaginatedResponse<OrganizationMembershipRequestResource>>;
63-
/**
64-
* @experimental This is an experimental API for the Billing feature that is available under a public beta, and the API is subject to change.
65-
*/
66-
getSubscriptions: (
67-
params?: GetSubscriptionsParams,
68-
) => Promise<ClerkPaginatedResponse<CommerceSubscriptionItemResource>>;
6959
addMember: (params: AddMemberParams) => Promise<OrganizationMembershipResource>;
7060
inviteMember: (params: InviteMemberParams) => Promise<OrganizationInvitationResource>;
7161
inviteMembers: (params: InviteMembersParams) => Promise<OrganizationInvitationResource[]>;

0 commit comments

Comments
 (0)