diff --git a/.changeset/modern-plums-invent.md b/.changeset/modern-plums-invent.md new file mode 100644 index 00000000000..b1b338a7bda --- /dev/null +++ b/.changeset/modern-plums-invent.md @@ -0,0 +1,13 @@ +--- +'@clerk/clerk-js': minor +--- + +Remove fallback data and allow promise to throw for paginated endpoint methods. +Affected methods: +- Organization.getDomains +- Organization.getInvitations +- Organization.getMembershipRequests +- Organization.getMemberships +- User.getOrganizationInvitations +- User.getOrganizationSuggestions +- User.getOrganizationMemberships diff --git a/packages/clerk-js/src/core/resources/Organization.ts b/packages/clerk-js/src/core/resources/Organization.ts index 4ab04ab01c0..cd7e354ebf2 100644 --- a/packages/clerk-js/src/core/resources/Organization.ts +++ b/packages/clerk-js/src/core/resources/Organization.ts @@ -114,20 +114,14 @@ export class Organization extends BaseResource implements OrganizationResource { { forceUpdateClient: true, }, - ) - .then(res => { - const { data: invites, total_count } = - res?.response as unknown as ClerkPaginatedResponse; - - return { - total_count, - data: invites.map(domain => new OrganizationDomain(domain)), - }; - }) - .catch(() => ({ - total_count: 0, - data: [], - })); + ).then(res => { + const { data: invites, total_count } = res?.response as unknown as ClerkPaginatedResponse; + + return { + total_count, + data: invites.map(domain => new OrganizationDomain(domain)), + }; + }); }; getDomain = async ({ domainId }: { domainId: string }): Promise => { @@ -147,20 +141,15 @@ export class Organization extends BaseResource implements OrganizationResource { path: `/organizations/${this.id}/membership_requests`, method: 'GET', search: convertPageToOffset(getRequestParam), - }) - .then(res => { - const { data: requests, total_count } = - res?.response as unknown as ClerkPaginatedResponse; - - return { - total_count, - data: requests.map(request => new OrganizationMembershipRequest(request)), - }; - }) - .catch(() => ({ - total_count: 0, - data: [], - })); + }).then(res => { + const { data: requests, total_count } = + res?.response as unknown as ClerkPaginatedResponse; + + return { + total_count, + data: requests.map(request => new OrganizationMembershipRequest(request)), + }; + }); }; createDomain = async (name: string): Promise => { @@ -174,22 +163,15 @@ export class Organization extends BaseResource implements OrganizationResource { // `paginated` is used in some legacy endpoints to support clerk paginated responses // The parameter will be dropped in FAPI v2 search: convertPageToOffset({ ...getMembershipsParams, paginated: true }), - }) - .then(res => { - const { data: suggestions, total_count } = - res?.response as unknown as ClerkPaginatedResponse; - - return { - total_count, - data: suggestions.map(suggestion => new OrganizationMembership(suggestion)), - }; - }) - .catch(() => { - return { - total_count: 0, - data: [], - }; - }); + }).then(res => { + const { data: suggestions, total_count } = + res?.response as unknown as ClerkPaginatedResponse; + + return { + total_count, + data: suggestions.map(suggestion => new OrganizationMembership(suggestion)), + }; + }); }; getInvitations = async ( @@ -204,20 +186,15 @@ export class Organization extends BaseResource implements OrganizationResource { { forceUpdateClient: true, }, - ) - .then(res => { - const { data: requests, total_count } = - res?.response as unknown as ClerkPaginatedResponse; - - return { - total_count, - data: requests.map(request => new OrganizationInvitation(request)), - }; - }) - .catch(() => ({ - total_count: 0, - data: [], - })); + ).then(res => { + const { data: requests, total_count } = + res?.response as unknown as ClerkPaginatedResponse; + + return { + total_count, + data: requests.map(request => new OrganizationInvitation(request)), + }; + }); }; addMember = async ({ userId, role }: AddMemberParams) => { diff --git a/packages/clerk-js/src/core/resources/OrganizationMembership.ts b/packages/clerk-js/src/core/resources/OrganizationMembership.ts index 1dbcfcaa0e1..8b77a79c9a6 100644 --- a/packages/clerk-js/src/core/resources/OrganizationMembership.ts +++ b/packages/clerk-js/src/core/resources/OrganizationMembership.ts @@ -34,30 +34,16 @@ export class OrganizationMembership extends BaseResource implements Organization // `paginated` is used in some legacy endpoints to support clerk paginated responses // The parameter will be dropped in FAPI v2 search: convertPageToOffset({ ...retrieveMembershipsParams, paginated: true }), - }) - .then(res => { - if (!res?.response) { - return { - total_count: 0, - data: [], - }; - } - - // TODO: Fix typing - const { data: suggestions, total_count } = - res.response as unknown as ClerkPaginatedResponse; - - return { - total_count, - data: suggestions.map(suggestion => new OrganizationMembership(suggestion)), - }; - }) - .catch(() => { - return { - total_count: 0, - data: [], - }; - }); + }).then(res => { + // TODO: Fix typing + const { data: suggestions, total_count } = + res?.response as unknown as ClerkPaginatedResponse; + + return { + total_count, + data: suggestions.map(suggestion => new OrganizationMembership(suggestion)), + }; + }); }; destroy = async (): Promise => { diff --git a/packages/clerk-js/src/core/resources/OrganizationSuggestion.ts b/packages/clerk-js/src/core/resources/OrganizationSuggestion.ts index 41e31855d56..2c279b1aecb 100644 --- a/packages/clerk-js/src/core/resources/OrganizationSuggestion.ts +++ b/packages/clerk-js/src/core/resources/OrganizationSuggestion.ts @@ -30,20 +30,15 @@ export class OrganizationSuggestion extends BaseResource implements Organization path: '/me/organization_suggestions', method: 'GET', search: convertPageToOffset(params), - }) - .then(res => { - const { data: suggestions, total_count } = - res?.response as unknown as ClerkPaginatedResponse; + }).then(res => { + const { data: suggestions, total_count } = + res?.response as unknown as ClerkPaginatedResponse; - return { - total_count, - data: suggestions.map(suggestion => new OrganizationSuggestion(suggestion)), - }; - }) - .catch(() => ({ - total_count: 0, - data: [], - })); + return { + total_count, + data: suggestions.map(suggestion => new OrganizationSuggestion(suggestion)), + }; + }); } accept = async (): Promise => { diff --git a/packages/clerk-js/src/core/resources/UserOrganizationInvitation.ts b/packages/clerk-js/src/core/resources/UserOrganizationInvitation.ts index dc795224dc6..8bc51cc7ad6 100644 --- a/packages/clerk-js/src/core/resources/UserOrganizationInvitation.ts +++ b/packages/clerk-js/src/core/resources/UserOrganizationInvitation.ts @@ -28,20 +28,15 @@ export class UserOrganizationInvitation extends BaseResource implements UserOrga path: '/me/organization_invitations', method: 'GET', search: convertPageToOffset(params), - }) - .then(res => { - const { data: invites, total_count } = - res?.response as unknown as ClerkPaginatedResponse; + }).then(res => { + const { data: invites, total_count } = + res?.response as unknown as ClerkPaginatedResponse; - return { - total_count, - data: invites.map(invitation => new UserOrganizationInvitation(invitation)), - }; - }) - .catch(() => ({ - total_count: 0, - data: [], - })); + return { + total_count, + data: invites.map(invitation => new UserOrganizationInvitation(invitation)), + }; + }); } constructor(data: UserOrganizationInvitationJSON) {