mirror of
https://github.com/ichmagmaus111/ghostgram.git
synced 2026-07-25 08:50:51 +02:00
Update Ghostgram features
This commit is contained in:
@@ -5,7 +5,8 @@ import TelegramApi
|
||||
func parsedTelegramProfilePhoto(_ photo: Api.UserProfilePhoto) -> [TelegramMediaImageRepresentation] {
|
||||
var representations: [TelegramMediaImageRepresentation] = []
|
||||
switch photo {
|
||||
case let .userProfilePhoto(flags, id, strippedThumb, dcId):
|
||||
case let .userProfilePhoto(userProfilePhotoData):
|
||||
let (flags, id, strippedThumb, dcId) = (userProfilePhotoData.flags, userProfilePhotoData.photoId, userProfilePhotoData.strippedThumb, userProfilePhotoData.dcId)
|
||||
let hasVideo = (flags & (1 << 0)) != 0
|
||||
let isPersonal = (flags & (1 << 2)) != 0
|
||||
|
||||
@@ -26,7 +27,8 @@ func parsedTelegramProfilePhoto(_ photo: Api.UserProfilePhoto) -> [TelegramMedia
|
||||
extension TelegramPeerUsername {
|
||||
init(apiUsername: Api.Username) {
|
||||
switch apiUsername {
|
||||
case let .username(flags, username):
|
||||
case let .username(usernameData):
|
||||
let (flags, username) = (usernameData.flags, usernameData.username)
|
||||
self.init(flags: Flags(rawValue: flags), username: username)
|
||||
}
|
||||
}
|
||||
@@ -35,10 +37,11 @@ extension TelegramPeerUsername {
|
||||
extension PeerVerification {
|
||||
init(apiBotVerification: Api.BotVerification) {
|
||||
switch apiBotVerification {
|
||||
case let .botVerification(botId, iconFileId, description):
|
||||
case let .botVerification(botVerificationData):
|
||||
let (botId, icon, description) = (botVerificationData.botId, botVerificationData.icon, botVerificationData.description)
|
||||
self.init(
|
||||
botId: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(botId)),
|
||||
iconFileId: iconFileId,
|
||||
iconFileId: icon,
|
||||
description: description
|
||||
)
|
||||
}
|
||||
@@ -49,7 +52,8 @@ extension PeerVerification {
|
||||
extension TelegramUser {
|
||||
convenience init(user: Api.User) {
|
||||
switch user {
|
||||
case let .user(flags, flags2, id, accessHash, firstName, lastName, username, phone, photo, _, _, restrictionReason, botInlinePlaceholder, _, emojiStatus, usernames, _, color, profileColor, subscriberCount, verificationIconFileId, _):
|
||||
case let .user(userData):
|
||||
let (flags, flags2, id, accessHash, firstName, lastName, username, phone, photo, _, _, restrictionReason, botInlinePlaceholder, _, emojiStatus, usernames, _, color, profileColor, subscriberCount, verificationIconFileId, _) = (userData.flags, userData.flags2, userData.id, userData.accessHash, userData.firstName, userData.lastName, userData.username, userData.phone, userData.photo, userData.status, userData.botInfoVersion, userData.restrictionReason, userData.botInlinePlaceholder, userData.langCode, userData.emojiStatus, userData.usernames, userData.storiesMaxId, userData.color, userData.profileColor, userData.botActiveUsers, userData.botVerificationIcon, userData.sendPaidMessagesStars)
|
||||
let representations: [TelegramMediaImageRepresentation] = photo.flatMap(parsedTelegramProfilePhoto) ?? []
|
||||
|
||||
let isMin = (flags & (1 << 20)) != 0
|
||||
@@ -121,6 +125,9 @@ extension TelegramUser {
|
||||
if (flags2 & (1 << 16)) != 0 {
|
||||
botFlags.insert(.hasForum)
|
||||
}
|
||||
if (flags2 & (1 << 17)) != 0 {
|
||||
botFlags.insert(.forumManagedByUser)
|
||||
}
|
||||
botInfo = BotUserInfo(flags: botFlags, inlinePlaceholder: botInlinePlaceholder)
|
||||
}
|
||||
|
||||
@@ -130,12 +137,14 @@ extension TelegramUser {
|
||||
var backgroundEmojiId: Int64?
|
||||
if let color = color {
|
||||
switch color {
|
||||
case let .peerColor(_, color, backgroundEmojiIdValue):
|
||||
case let .peerColor(peerColorData):
|
||||
let (_, color, backgroundEmojiIdValue) = (peerColorData.flags, peerColorData.color, peerColorData.backgroundEmojiId)
|
||||
if let color {
|
||||
nameColor = .preset(PeerNameColor(rawValue: color))
|
||||
}
|
||||
backgroundEmojiId = backgroundEmojiIdValue
|
||||
case let .peerColorCollectible(_, collectibleId, giftEmojiId, backgroundEmojiIdValue, accentColor, colors, darkAccentColor, darkColors):
|
||||
case let .peerColorCollectible(peerColorCollectibleData):
|
||||
let (_, collectibleId, giftEmojiId, backgroundEmojiIdValue, accentColor, colors, darkAccentColor, darkColors) = (peerColorCollectibleData.flags, peerColorCollectibleData.collectibleId, peerColorCollectibleData.giftEmojiId, peerColorCollectibleData.backgroundEmojiId, peerColorCollectibleData.accentColor, peerColorCollectibleData.colors, peerColorCollectibleData.darkAccentColor, peerColorCollectibleData.darkColors)
|
||||
nameColor = .collectible(PeerCollectibleColor(
|
||||
collectibleId: collectibleId,
|
||||
giftEmojiFileId: giftEmojiId,
|
||||
@@ -150,12 +159,13 @@ extension TelegramUser {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var profileColorIndex: Int32?
|
||||
var profileBackgroundEmojiId: Int64?
|
||||
if let profileColor = profileColor {
|
||||
switch profileColor {
|
||||
case let .peerColor(_, color, backgroundEmojiIdValue):
|
||||
case let .peerColor(peerColorData):
|
||||
let (_, color, backgroundEmojiIdValue) = (peerColorData.flags, peerColorData.color, peerColorData.backgroundEmojiId)
|
||||
profileColorIndex = color
|
||||
profileBackgroundEmojiId = backgroundEmojiIdValue
|
||||
default:
|
||||
@@ -164,14 +174,16 @@ extension TelegramUser {
|
||||
}
|
||||
|
||||
self.init(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(id)), accessHash: accessHashValue, firstName: firstName, lastName: lastName, username: username, phone: phone, photo: representations, botInfo: botInfo, restrictionInfo: restrictionInfo, flags: userFlags, emojiStatus: emojiStatus.flatMap(PeerEmojiStatus.init(apiStatus:)), usernames: usernames?.map(TelegramPeerUsername.init(apiUsername:)) ?? [], storiesHidden: storiesHidden, nameColor: nameColor, backgroundEmojiId: backgroundEmojiId, profileColor: profileColorIndex.flatMap { PeerNameColor(rawValue: $0) }, profileBackgroundEmojiId: profileBackgroundEmojiId, subscriberCount: subscriberCount, verificationIconFileId: verificationIconFileId)
|
||||
case let .userEmpty(id):
|
||||
case let .userEmpty(userEmptyData):
|
||||
let id = userEmptyData.id
|
||||
self.init(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(id)), accessHash: nil, firstName: nil, lastName: nil, username: nil, phone: nil, photo: [], botInfo: nil, restrictionInfo: nil, flags: [], emojiStatus: nil, usernames: [], storiesHidden: nil, nameColor: nil, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, subscriberCount: nil, verificationIconFileId: nil)
|
||||
}
|
||||
}
|
||||
|
||||
static func merge(_ lhs: TelegramUser?, rhs: Api.User) -> TelegramUser? {
|
||||
switch rhs {
|
||||
case let .user(flags, _, _, rhsAccessHash, _, _, _, _, photo, _, _, restrictionReason, botInlinePlaceholder, _, emojiStatus, _, _, color, profileColor, subscriberCount, _, _):
|
||||
case let .user(userData):
|
||||
let (flags, _, _, rhsAccessHash, _, _, _, _, photo, _, _, restrictionReason, botInlinePlaceholder, _, emojiStatus, _, _, color, profileColor, subscriberCount, _, _) = (userData.flags, userData.flags2, userData.id, userData.accessHash, userData.firstName, userData.lastName, userData.username, userData.phone, userData.photo, userData.status, userData.botInfoVersion, userData.restrictionReason, userData.botInlinePlaceholder, userData.langCode, userData.emojiStatus, userData.usernames, userData.storiesMaxId, userData.color, userData.profileColor, userData.botActiveUsers, userData.botVerificationIcon, userData.sendPaidMessagesStars)
|
||||
let isMin = (flags & (1 << 20)) != 0
|
||||
if !isMin {
|
||||
return TelegramUser(user: rhs)
|
||||
@@ -256,12 +268,14 @@ extension TelegramUser {
|
||||
var backgroundEmojiId: Int64?
|
||||
if let color {
|
||||
switch color {
|
||||
case let .peerColor(_, color, backgroundEmojiIdValue):
|
||||
case let .peerColor(peerColorData):
|
||||
let (_, color, backgroundEmojiIdValue) = (peerColorData.flags, peerColorData.color, peerColorData.backgroundEmojiId)
|
||||
if let color {
|
||||
nameColor = .preset(PeerNameColor(rawValue: color))
|
||||
}
|
||||
backgroundEmojiId = backgroundEmojiIdValue
|
||||
case let .peerColorCollectible(_, collectibleId, giftEmojiId, backgroundEmojiIdValue, accentColor, colors, darkAccentColor, darkColors):
|
||||
case let .peerColorCollectible(peerColorCollectibleData):
|
||||
let (_, collectibleId, giftEmojiId, backgroundEmojiIdValue, accentColor, colors, darkAccentColor, darkColors) = (peerColorCollectibleData.flags, peerColorCollectibleData.collectibleId, peerColorCollectibleData.giftEmojiId, peerColorCollectibleData.backgroundEmojiId, peerColorCollectibleData.accentColor, peerColorCollectibleData.colors, peerColorCollectibleData.darkAccentColor, peerColorCollectibleData.darkColors)
|
||||
nameColor = .collectible(PeerCollectibleColor(
|
||||
collectibleId: collectibleId,
|
||||
giftEmojiFileId: giftEmojiId,
|
||||
@@ -276,12 +290,13 @@ extension TelegramUser {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var profileColorIndex: Int32?
|
||||
var profileBackgroundEmojiId: Int64?
|
||||
if let profileColor = profileColor {
|
||||
switch profileColor {
|
||||
case let .peerColor(_, color, backgroundEmojiIdValue):
|
||||
case let .peerColor(peerColorData):
|
||||
let (_, color, backgroundEmojiIdValue) = (peerColorData.flags, peerColorData.color, peerColorData.backgroundEmojiId)
|
||||
profileColorIndex = color
|
||||
profileBackgroundEmojiId = backgroundEmojiIdValue
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user