Skip to content

Commit 71e6a1f

Browse files
authored
fix(clerk-js,types): Handle missing publicUserData in OrganizationMembership (#6016)
1 parent 68bd90f commit 71e6a1f

File tree

5 files changed

+16
-8
lines changed

5 files changed

+16
-8
lines changed

.changeset/three-days-wash.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@clerk/clerk-js': patch
3+
'@clerk/types': patch
4+
---
5+
6+
Handle missing `publicUserData` in `OrganizationMembership`

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { BaseResource, Organization, PublicUserData } from './internal';
1717
export class OrganizationMembership extends BaseResource implements OrganizationMembershipResource {
1818
id!: string;
1919
publicMetadata: OrganizationMembershipPublicMetadata = {};
20-
publicUserData!: PublicUserData;
20+
publicUserData?: PublicUserData;
2121
organization!: Organization;
2222
permissions: OrganizationPermissionKey[] = [];
2323
role!: OrganizationCustomRoleKey;
@@ -50,14 +50,16 @@ export class OrganizationMembership extends BaseResource implements Organization
5050

5151
destroy = async (): Promise<OrganizationMembership> => {
5252
// TODO: Revise the return type of _baseDelete
53+
// TODO: Handle case where publicUserData is not present
5354
return (await this._baseDelete({
54-
path: `/organizations/${this.organization.id}/memberships/${this.publicUserData.userId}`,
55+
path: `/organizations/${this.organization.id}/memberships/${this.publicUserData?.userId}`,
5556
})) as unknown as OrganizationMembership;
5657
};
5758

5859
update = async ({ role }: UpdateOrganizationMembershipParams): Promise<OrganizationMembership> => {
60+
// TODO: Handle case where publicUserData is not present
5961
return await this._basePatch({
60-
path: `/organizations/${this.organization.id}/memberships/${this.publicUserData.userId}`,
62+
path: `/organizations/${this.organization.id}/memberships/${this.publicUserData?.userId}`,
6163
body: { role },
6264
});
6365
};
@@ -86,7 +88,7 @@ export class OrganizationMembership extends BaseResource implements Organization
8688
id: this.id,
8789
organization: this.organization.__internal_toSnapshot(),
8890
public_metadata: this.publicMetadata,
89-
public_user_data: this.publicUserData.__internal_toSnapshot(),
91+
public_user_data: this.publicUserData?.__internal_toSnapshot(),
9092
permissions: this.permissions,
9193
role: this.role,
9294
created_at: this.createdAt.getTime(),

packages/clerk-js/src/ui/components/OrganizationProfile/ActiveMembersList.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ const MemberRow = (props: {
7676
const card = useCardState();
7777
const { user } = useUser();
7878

79-
const isCurrentUser = user?.id === membership.publicUserData.userId;
79+
const isCurrentUser = user?.id === membership.publicUserData?.userId;
8080
const unlocalizedRoleLabel = options?.find(a => a.value === membership.role)?.label;
8181

8282
return (
@@ -85,7 +85,7 @@ const MemberRow = (props: {
8585
<UserPreview
8686
sx={{ maxWidth: '30ch' }}
8787
user={membership.publicUserData}
88-
subtitle={membership.publicUserData.identifier}
88+
subtitle={membership.publicUserData?.identifier}
8989
badge={isCurrentUser && <Badge localizationKey={localizationKeys('badge__you')} />}
9090
/>
9191
</Td>

packages/types/src/json.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ export interface OrganizationMembershipJSON extends ClerkResourceJSON {
390390
organization: OrganizationJSON;
391391
permissions: OrganizationPermissionKey[];
392392
public_metadata: OrganizationMembershipPublicMetadata;
393-
public_user_data: PublicUserDataJSON;
393+
public_user_data?: PublicUserDataJSON;
394394
role: OrganizationCustomRoleKey;
395395
created_at: number;
396396
updated_at: number;

packages/types/src/organizationMembership.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export interface OrganizationMembershipResource extends ClerkResource {
4848
organization: OrganizationResource;
4949
permissions: OrganizationPermissionKey[];
5050
publicMetadata: OrganizationMembershipPublicMetadata;
51-
publicUserData: PublicUserData;
51+
publicUserData?: PublicUserData;
5252
role: OrganizationCustomRoleKey;
5353
createdAt: Date;
5454
updatedAt: Date;

0 commit comments

Comments
 (0)