From ad7b0748d9a5bc32bab01604c0e2a688cbac441c Mon Sep 17 00:00:00 2001 From: Shaun Hamilton Date: Tue, 29 Jul 2025 17:04:31 +0200 Subject: [PATCH] fix(api): return usernameDisplay (#61567) Co-authored-by: Oliver Eyton-Williams --- api/src/routes/protected/user.test.ts | 4 +++- api/src/routes/protected/user.ts | 3 ++- api/src/routes/public/user.test.ts | 3 ++- api/src/routes/public/user.ts | 7 ++++--- api/src/schemas/user/get-session-user.ts | 1 + api/src/schemas/users/get-public-profile.ts | 1 + 6 files changed, 13 insertions(+), 6 deletions(-) diff --git a/api/src/routes/protected/user.test.ts b/api/src/routes/protected/user.test.ts index 4ae9bbce94f..d69127a81ae 100644 --- a/api/src/routes/protected/user.test.ts +++ b/api/src/routes/protected/user.test.ts @@ -140,6 +140,7 @@ const minimalUserData: Prisma.userCreateInput = { picture: 'https://www.freecodecamp.org/cat.png', sendQuincyEmail: true, username: 'testuser', + usernameDisplay: 'testuser', unsubscribeId: '1234567890' }; @@ -276,7 +277,8 @@ const publicUserData = { profileUI: testUserData.profileUI, savedChallenges: testUserData.savedChallenges, twitter: 'https://twitter.com/foobar', - username: testUserData.usernameDisplay, // It defaults to usernameDisplay + username: testUserData.username, + usernameDisplay: testUserData.usernameDisplay, website: testUserData.website, yearsTopContributor: testUserData.yearsTopContributor }; diff --git a/api/src/routes/protected/user.ts b/api/src/routes/protected/user.ts index 0d651acea20..82b5dc33dd6 100644 --- a/api/src/routes/protected/user.ts +++ b/api/src/routes/protected/user.ts @@ -682,7 +682,8 @@ export const userGetRoutes: FastifyPluginCallbackTypebox = ( name: name ?? '', theme: theme ?? 'default', twitter: normalizeTwitter(twitter), - username: usernameDisplay || username, + username, + usernameDisplay: usernameDisplay || username, userToken: encodedToken, completedSurveys: normalizeSurveys(completedSurveys), msUsername: msUsername?.msUsername diff --git a/api/src/routes/public/user.test.ts b/api/src/routes/public/user.test.ts index 6487d358dbf..788d9307c73 100644 --- a/api/src/routes/public/user.test.ts +++ b/api/src/routes/public/user.test.ts @@ -206,7 +206,8 @@ const publicUserData = { profileUI: testUserData.profileUI, savedChallenges: testUserData.savedChallenges, twitter: 'https://twitter.com/foobar', - username: testUserData.usernameDisplay, // It defaults to usernameDisplay + username: testUserData.username, + usernameDisplay: testUserData.usernameDisplay, website: testUserData.website, yearsTopContributor: testUserData.yearsTopContributor }; diff --git a/api/src/routes/public/user.ts b/api/src/routes/public/user.ts index bc5ffd0e62f..51fe0f70259 100644 --- a/api/src/routes/public/user.ts +++ b/api/src/routes/public/user.ts @@ -150,7 +150,6 @@ export const userPublicGetRoutes: FastifyPluginCallbackTypebox = ( 'unsubscribeId', 'donationEmails', 'externalId', - 'usernameDisplay', 'isBanned' ]); @@ -166,7 +165,8 @@ export const userPublicGetRoutes: FastifyPluginCallbackTypebox = ( [user.username]: { isLocked: true, profileUI: normalizedProfileUI, - username: user.username + username: user.username, + usernameDisplay: user.usernameDisplay || user.username } } }, @@ -197,7 +197,8 @@ export const userPublicGetRoutes: FastifyPluginCallbackTypebox = ( // setting control it? Same applies to website, githubProfile, // and linkedin. twitter: normalizeTwitter(user.twitter), - yearsTopContributor: user.yearsTopContributor + yearsTopContributor: user.yearsTopContributor, + usernameDisplay: user.usernameDisplay || user.username }; return reply.send({ // TODO(Post-MVP): just return a user object (i.e. returnedUser) and diff --git a/api/src/schemas/user/get-session-user.ts b/api/src/schemas/user/get-session-user.ts index 3d3212ad582..b09d4dcd282 100644 --- a/api/src/schemas/user/get-session-user.ts +++ b/api/src/schemas/user/get-session-user.ts @@ -117,6 +117,7 @@ export const getSessionUser = { joinDate: Type.String(), savedChallenges: Type.Optional(Type.Array(savedChallenge)), username: Type.String(), + usernameDisplay: Type.String(), userToken: Type.Optional(Type.String()), completedSurveys: Type.Array( Type.Object({ diff --git a/api/src/schemas/users/get-public-profile.ts b/api/src/schemas/users/get-public-profile.ts index 06ff7f90a4d..8daea0aead8 100644 --- a/api/src/schemas/users/get-public-profile.ts +++ b/api/src/schemas/users/get-public-profile.ts @@ -102,6 +102,7 @@ export const getPublicProfile = { joinDate: Type.String(), savedChallenges: Type.Array(savedChallenge), username: Type.String(), + usernameDisplay: Type.String(), msUsername: Type.Optional(Type.String()) }) ])