From 1a944057982153780b380c3b4cff7213525e0e9e Mon Sep 17 00:00:00 2001 From: zubiden <19638254+zubiden@users.noreply.github.com> Date: Tue, 30 Sep 2025 16:52:18 +0200 Subject: [PATCH] ApiPeer: Calculate `hasUsername` based on all usernames (#6275) --- src/api/gramjs/apiBuilders/chats.ts | 2 +- src/api/gramjs/apiBuilders/users.ts | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/api/gramjs/apiBuilders/chats.ts b/src/api/gramjs/apiBuilders/chats.ts index 4c74bd0a9..ec0938d10 100644 --- a/src/api/gramjs/apiBuilders/chats.ts +++ b/src/api/gramjs/apiBuilders/chats.ts @@ -63,9 +63,9 @@ function buildApiChatFieldsFromPeerEntity( const hasVideoAvatar = 'photo' in peerEntity && peerEntity.photo && 'hasVideo' in peerEntity.photo && peerEntity.photo.hasVideo; const avatarPhotoId = ('photo' in peerEntity) && peerEntity.photo ? buildAvatarPhotoId(peerEntity.photo) : undefined; - const hasUsername = Boolean('username' in peerEntity && peerEntity.username); const usernames = buildApiUsernames(peerEntity); + const hasUsername = usernames?.some((username) => username.isActive); // Chat and channel shared fields const isCallActive = 'callActive' in peerEntity && peerEntity.callActive; diff --git a/src/api/gramjs/apiBuilders/users.ts b/src/api/gramjs/apiBuilders/users.ts index 1089be2e3..95a7d9595 100644 --- a/src/api/gramjs/apiBuilders/users.ts +++ b/src/api/gramjs/apiBuilders/users.ts @@ -101,12 +101,13 @@ export function buildApiUser(mtpUser: GramJs.TypeUser): ApiUser | undefined { const { id, firstName, lastName, fake, scam, support, closeFriend, storiesUnavailable, storiesMaxId, bot, botActiveUsers, botVerificationIcon, botInlinePlaceholder, botAttachMenu, botCanEdit, - sendPaidMessagesStars, username, profileColor, + sendPaidMessagesStars, profileColor, } = mtpUser; const hasVideoAvatar = mtpUser.photo instanceof GramJs.UserProfilePhoto ? Boolean(mtpUser.photo.hasVideo) : undefined; const avatarPhotoId = mtpUser.photo && buildAvatarPhotoId(mtpUser.photo); const userType = buildApiUserType(mtpUser); const usernames = buildApiUsernames(mtpUser); + const hasUsername = usernames?.some((username) => username.isActive); const emojiStatus = mtpUser.emojiStatus ? buildApiEmojiStatus(mtpUser.emojiStatus) : undefined; return { @@ -125,8 +126,8 @@ export function buildApiUser(mtpUser: GramJs.TypeUser): ApiUser | undefined { hasMainMiniApp: Boolean(mtpUser.botHasMainApp), canEditBot: botCanEdit, ...(userType === 'userTypeBot' && { canBeInvitedToGroup: !mtpUser.botNochats }), - ...(usernames && { usernames }), - hasUsername: Boolean(username), + usernames, + hasUsername, phoneNumber: mtpUser.phone || '', noStatus: !mtpUser.status, ...(mtpUser.accessHash && { accessHash: String(mtpUser.accessHash) }),