From 73206d27de1b19a29bb5ef815ce155a58748bc69 Mon Sep 17 00:00:00 2001 From: panteliselef Date: Fri, 5 Jan 2024 21:26:05 +0200 Subject: [PATCH 1/3] fix(backend): Fix minor misalignment's with the User FAPI and BAPI classes --- .changeset/early-carpets-fly.md | 5 +++++ packages/backend/src/api/resources/User.ts | 19 ++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 .changeset/early-carpets-fly.md diff --git a/.changeset/early-carpets-fly.md b/.changeset/early-carpets-fly.md new file mode 100644 index 00000000000..c4af8d8d448 --- /dev/null +++ b/.changeset/early-carpets-fly.md @@ -0,0 +1,5 @@ +--- +'@clerk/backend': minor +--- + +Add fullName, primaryEmailAddress, primaryPhoneNumber, primaryWeb3Wallet to User class. diff --git a/packages/backend/src/api/resources/User.ts b/packages/backend/src/api/resources/User.ts index b03d5844bcc..00dcdb76f4c 100644 --- a/packages/backend/src/api/resources/User.ts +++ b/packages/backend/src/api/resources/User.ts @@ -3,6 +3,8 @@ import { ExternalAccount } from './ExternalAccount'; import type { ExternalAccountJSON, UserJSON } from './JSON'; import { PhoneNumber } from './PhoneNumber'; import { Web3Wallet } from './Web3Wallet'; +export const getFullName = ({ firstName, lastName }: { firstName?: string | null; lastName?: string | null }) => + [firstName, lastName].join(' ').trim() || null; export class User { constructor( @@ -19,13 +21,17 @@ export class User { readonly gender: string, readonly birthday: string, readonly primaryEmailAddressId: string | null, + readonly primaryEmailAddress: EmailAddress | null, readonly primaryPhoneNumberId: string | null, + readonly primaryPhoneNumber: PhoneNumber | null, readonly primaryWeb3WalletId: string | null, + readonly primaryWeb3Wallet: Web3Wallet | null, readonly lastSignInAt: number | null, readonly externalId: string | null, readonly username: string | null, readonly firstName: string | null, readonly lastName: string | null, + readonly fullName: string | null, readonly publicMetadata: UserPublicMetadata = {}, readonly privateMetadata: UserPrivateMetadata = {}, readonly unsafeMetadata: UserUnsafeMetadata = {}, @@ -38,6 +44,9 @@ export class User { ) {} static fromJSON(data: UserJSON): User { + const emailAddresses = (data.email_addresses || []).map(x => EmailAddress.fromJSON(x)); + const phoneNumbers = (data.phone_numbers || []).map(x => PhoneNumber.fromJSON(x)); + const wallets = (data.web3_wallets || []).map(x => Web3Wallet.fromJSON(x)); return new User( data.id, data.password_enabled, @@ -52,19 +61,23 @@ export class User { data.gender, data.birthday, data.primary_email_address_id, + emailAddresses.find(({ id }) => id === data.primary_email_address_id) ?? null, data.primary_phone_number_id, + phoneNumbers.find(({ id }) => id === data.primary_phone_number_id) ?? null, data.primary_web3_wallet_id, + wallets.find(({ id }) => id === data.primary_web3_wallet_id) ?? null, data.last_sign_in_at, data.external_id, data.username, data.first_name, data.last_name, + getFullName({ firstName: data.first_name, lastName: data.last_name }), data.public_metadata, data.private_metadata, data.unsafe_metadata, - (data.email_addresses || []).map(x => EmailAddress.fromJSON(x)), - (data.phone_numbers || []).map(x => PhoneNumber.fromJSON(x)), - (data.web3_wallets || []).map(x => Web3Wallet.fromJSON(x)), + emailAddresses, + phoneNumbers, + wallets, (data.external_accounts || []).map((x: ExternalAccountJSON) => ExternalAccount.fromJSON(x)), data.last_active_at, data.create_organization_enabled, From 4b8c57aa8a73776fe9c73576e78ee0e46f6a7b1a Mon Sep 17 00:00:00 2001 From: panteliselef Date: Mon, 8 Jan 2024 11:54:55 +0200 Subject: [PATCH 2/3] fix(backend): Fix minor misalignment's with the User FAPI and BAPI classes --- packages/backend/src/api/resources/User.ts | 26 +++++++++++++--------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/packages/backend/src/api/resources/User.ts b/packages/backend/src/api/resources/User.ts index 00dcdb76f4c..d771e0fb453 100644 --- a/packages/backend/src/api/resources/User.ts +++ b/packages/backend/src/api/resources/User.ts @@ -3,8 +3,6 @@ import { ExternalAccount } from './ExternalAccount'; import type { ExternalAccountJSON, UserJSON } from './JSON'; import { PhoneNumber } from './PhoneNumber'; import { Web3Wallet } from './Web3Wallet'; -export const getFullName = ({ firstName, lastName }: { firstName?: string | null; lastName?: string | null }) => - [firstName, lastName].join(' ').trim() || null; export class User { constructor( @@ -21,17 +19,13 @@ export class User { readonly gender: string, readonly birthday: string, readonly primaryEmailAddressId: string | null, - readonly primaryEmailAddress: EmailAddress | null, readonly primaryPhoneNumberId: string | null, - readonly primaryPhoneNumber: PhoneNumber | null, readonly primaryWeb3WalletId: string | null, - readonly primaryWeb3Wallet: Web3Wallet | null, readonly lastSignInAt: number | null, readonly externalId: string | null, readonly username: string | null, readonly firstName: string | null, readonly lastName: string | null, - readonly fullName: string | null, readonly publicMetadata: UserPublicMetadata = {}, readonly privateMetadata: UserPrivateMetadata = {}, readonly unsafeMetadata: UserUnsafeMetadata = {}, @@ -61,17 +55,13 @@ export class User { data.gender, data.birthday, data.primary_email_address_id, - emailAddresses.find(({ id }) => id === data.primary_email_address_id) ?? null, data.primary_phone_number_id, - phoneNumbers.find(({ id }) => id === data.primary_phone_number_id) ?? null, data.primary_web3_wallet_id, - wallets.find(({ id }) => id === data.primary_web3_wallet_id) ?? null, data.last_sign_in_at, data.external_id, data.username, data.first_name, data.last_name, - getFullName({ firstName: data.first_name, lastName: data.last_name }), data.public_metadata, data.private_metadata, data.unsafe_metadata, @@ -83,4 +73,20 @@ export class User { data.create_organization_enabled, ); } + + get primaryEmailAddress() { + return this.emailAddresses.find(({ id }) => id === this.primaryEmailAddressId) ?? null; + } + + get primaryPhoneNumber() { + return this.phoneNumbers.find(({ id }) => id === this.primaryPhoneNumberId) ?? null; + } + + get primaryWeb3Wallet() { + return this.web3Wallets.find(({ id }) => id === this.primaryWeb3WalletId) ?? null; + } + + get fullName() { + return [this.firstName, this.lastName].join(' ').trim() || null; + } } From ec8179b41be6304627b95602bbb974e90f0d49c8 Mon Sep 17 00:00:00 2001 From: panteliselef Date: Mon, 8 Jan 2024 11:56:41 +0200 Subject: [PATCH 3/3] fix(backend): Rollback unnecessary changes --- packages/backend/src/api/resources/User.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/packages/backend/src/api/resources/User.ts b/packages/backend/src/api/resources/User.ts index d771e0fb453..f46fde35f22 100644 --- a/packages/backend/src/api/resources/User.ts +++ b/packages/backend/src/api/resources/User.ts @@ -38,9 +38,6 @@ export class User { ) {} static fromJSON(data: UserJSON): User { - const emailAddresses = (data.email_addresses || []).map(x => EmailAddress.fromJSON(x)); - const phoneNumbers = (data.phone_numbers || []).map(x => PhoneNumber.fromJSON(x)); - const wallets = (data.web3_wallets || []).map(x => Web3Wallet.fromJSON(x)); return new User( data.id, data.password_enabled, @@ -65,9 +62,9 @@ export class User { data.public_metadata, data.private_metadata, data.unsafe_metadata, - emailAddresses, - phoneNumbers, - wallets, + (data.email_addresses || []).map(x => EmailAddress.fromJSON(x)), + (data.phone_numbers || []).map(x => PhoneNumber.fromJSON(x)), + (data.web3_wallets || []).map(x => Web3Wallet.fromJSON(x)), (data.external_accounts || []).map((x: ExternalAccountJSON) => ExternalAccount.fromJSON(x)), data.last_active_at, data.create_organization_enabled,