mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-07 01:10:09 +00:00
Update API
This commit is contained in:
parent
a03dbbc365
commit
905a46e6cc
@ -2,19 +2,74 @@ import Foundation
|
|||||||
|
|
||||||
final class MutableCachedPeerDataView: MutablePostboxView {
|
final class MutableCachedPeerDataView: MutablePostboxView {
|
||||||
let peerId: PeerId
|
let peerId: PeerId
|
||||||
|
let trackAssociatedMessages: Bool
|
||||||
var cachedPeerData: CachedPeerData?
|
var cachedPeerData: CachedPeerData?
|
||||||
|
var associatedMessages: [MessageId: Message] = [:]
|
||||||
|
|
||||||
init(postbox: PostboxImpl, peerId: PeerId) {
|
init(postbox: PostboxImpl, peerId: PeerId, trackAssociatedMessages: Bool) {
|
||||||
self.peerId = peerId
|
self.peerId = peerId
|
||||||
|
self.trackAssociatedMessages = trackAssociatedMessages
|
||||||
self.cachedPeerData = postbox.cachedPeerDataTable.get(peerId)
|
self.cachedPeerData = postbox.cachedPeerDataTable.get(peerId)
|
||||||
|
if let cachedPeerData = self.cachedPeerData {
|
||||||
|
for id in cachedPeerData.messageIds {
|
||||||
|
if let message = postbox.getMessage(id) {
|
||||||
|
self.associatedMessages[message.id] = message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func replay(postbox: PostboxImpl, transaction: PostboxTransaction) -> Bool {
|
func replay(postbox: PostboxImpl, transaction: PostboxTransaction) -> Bool {
|
||||||
if let cachedPeerData = transaction.currentUpdatedCachedPeerData[self.peerId] {
|
if let cachedPeerData = transaction.currentUpdatedCachedPeerData[self.peerId] {
|
||||||
self.cachedPeerData = cachedPeerData
|
self.cachedPeerData = cachedPeerData
|
||||||
|
if self.trackAssociatedMessages {
|
||||||
|
self.associatedMessages.removeAll()
|
||||||
|
for id in cachedPeerData.messageIds {
|
||||||
|
if let message = postbox.getMessage(id) {
|
||||||
|
self.associatedMessages[message.id] = message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
} else {
|
} else {
|
||||||
return false
|
var updatedIds = Set<MessageId>()
|
||||||
|
if self.trackAssociatedMessages {
|
||||||
|
if let cachedPeerData = self.cachedPeerData {
|
||||||
|
for peerId in Set(cachedPeerData.messageIds.map(\.peerId)) {
|
||||||
|
if let operations = transaction.currentOperationsByPeerId[peerId] {
|
||||||
|
for operation in operations {
|
||||||
|
switch operation {
|
||||||
|
case let .InsertMessage(message):
|
||||||
|
if cachedPeerData.messageIds.contains(message.id) {
|
||||||
|
updatedIds.insert(message.id)
|
||||||
|
}
|
||||||
|
case let .Remove(indices):
|
||||||
|
for index in indices {
|
||||||
|
if cachedPeerData.messageIds.contains(index.0.id) {
|
||||||
|
updatedIds.insert(index.0.id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !updatedIds.isEmpty {
|
||||||
|
for id in updatedIds {
|
||||||
|
if let message = postbox.getMessage(id) {
|
||||||
|
self.associatedMessages[message.id] = message
|
||||||
|
} else {
|
||||||
|
self.associatedMessages.removeValue(forKey: id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,9 +85,11 @@ final class MutableCachedPeerDataView: MutablePostboxView {
|
|||||||
public final class CachedPeerDataView: PostboxView {
|
public final class CachedPeerDataView: PostboxView {
|
||||||
public let peerId: PeerId
|
public let peerId: PeerId
|
||||||
public let cachedPeerData: CachedPeerData?
|
public let cachedPeerData: CachedPeerData?
|
||||||
|
public let associatedMessages: [MessageId: Message]
|
||||||
|
|
||||||
init(_ view: MutableCachedPeerDataView) {
|
init(_ view: MutableCachedPeerDataView) {
|
||||||
self.peerId = view.peerId
|
self.peerId = view.peerId
|
||||||
self.cachedPeerData = view.cachedPeerData
|
self.cachedPeerData = view.cachedPeerData
|
||||||
|
self.associatedMessages = view.associatedMessages
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -65,6 +65,7 @@ public enum PostboxViewKey: Hashable {
|
|||||||
case historyTagSummaryView(tag: MessageTags, peerId: PeerId, threadId: Int64?, namespace: MessageId.Namespace, customTag: MemoryBuffer?)
|
case historyTagSummaryView(tag: MessageTags, peerId: PeerId, threadId: Int64?, namespace: MessageId.Namespace, customTag: MemoryBuffer?)
|
||||||
case historyCustomTagSummariesView(peerId: PeerId, threadId: Int64?, namespace: MessageId.Namespace)
|
case historyCustomTagSummariesView(peerId: PeerId, threadId: Int64?, namespace: MessageId.Namespace)
|
||||||
case cachedPeerData(peerId: PeerId)
|
case cachedPeerData(peerId: PeerId)
|
||||||
|
case cachedPeerDataWithMessages(peerId: PeerId)
|
||||||
case unreadCounts(items: [UnreadMessageCountsItem])
|
case unreadCounts(items: [UnreadMessageCountsItem])
|
||||||
case combinedReadState(peerId: PeerId, handleThreads: Bool)
|
case combinedReadState(peerId: PeerId, handleThreads: Bool)
|
||||||
case peerNotificationSettings(peerIds: Set<PeerId>)
|
case peerNotificationSettings(peerIds: Set<PeerId>)
|
||||||
@ -145,6 +146,8 @@ public enum PostboxViewKey: Hashable {
|
|||||||
hasher.combine(namespace)
|
hasher.combine(namespace)
|
||||||
case let .cachedPeerData(peerId):
|
case let .cachedPeerData(peerId):
|
||||||
hasher.combine(peerId)
|
hasher.combine(peerId)
|
||||||
|
case let .cachedPeerDataWithMessages(peerId):
|
||||||
|
hasher.combine(peerId)
|
||||||
case .unreadCounts:
|
case .unreadCounts:
|
||||||
hasher.combine(5)
|
hasher.combine(5)
|
||||||
case .combinedReadState:
|
case .combinedReadState:
|
||||||
@ -320,6 +323,12 @@ public enum PostboxViewKey: Hashable {
|
|||||||
} else {
|
} else {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
case let .cachedPeerDataWithMessages(peerId):
|
||||||
|
if case .cachedPeerDataWithMessages(peerId) = rhs {
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
case let .unreadCounts(lhsItems):
|
case let .unreadCounts(lhsItems):
|
||||||
if case let .unreadCounts(rhsItems) = rhs, lhsItems == rhsItems {
|
if case let .unreadCounts(rhsItems) = rhs, lhsItems == rhsItems {
|
||||||
return true
|
return true
|
||||||
@ -571,7 +580,9 @@ func postboxViewForKey(postbox: PostboxImpl, key: PostboxViewKey) -> MutablePost
|
|||||||
case let .historyCustomTagSummariesView(peerId, threadId, namespace):
|
case let .historyCustomTagSummariesView(peerId, threadId, namespace):
|
||||||
return MutableMessageHistoryCustomTagSummariesView(postbox: postbox, peerId: peerId, threadId: threadId, namespace: namespace)
|
return MutableMessageHistoryCustomTagSummariesView(postbox: postbox, peerId: peerId, threadId: threadId, namespace: namespace)
|
||||||
case let .cachedPeerData(peerId):
|
case let .cachedPeerData(peerId):
|
||||||
return MutableCachedPeerDataView(postbox: postbox, peerId: peerId)
|
return MutableCachedPeerDataView(postbox: postbox, peerId: peerId, trackAssociatedMessages: false)
|
||||||
|
case let .cachedPeerDataWithMessages(peerId):
|
||||||
|
return MutableCachedPeerDataView(postbox: postbox, peerId: peerId, trackAssociatedMessages: true)
|
||||||
case let .unreadCounts(items):
|
case let .unreadCounts(items):
|
||||||
return MutableUnreadMessageCountsView(postbox: postbox, items: items)
|
return MutableUnreadMessageCountsView(postbox: postbox, items: items)
|
||||||
case let .combinedReadState(peerId, handleThreads):
|
case let .combinedReadState(peerId, handleThreads):
|
||||||
|
|||||||
@ -321,10 +321,10 @@ private final class TextSizeSelectionControllerNode: ASDisplayNode, ASScrollView
|
|||||||
let selfPeer: EnginePeer = .user(TelegramUser(id: self.context.account.peerId, 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))
|
let selfPeer: EnginePeer = .user(TelegramUser(id: self.context.account.peerId, 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))
|
||||||
let peer1: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(1)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_1_Name, 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))
|
let peer1: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(1)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_1_Name, 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))
|
||||||
let peer2: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(2)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_2_Name, 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))
|
let peer2: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(2)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_2_Name, 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))
|
||||||
let peer3: EnginePeer = .channel(TelegramChannel(id: PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(3)), accessHash: nil, title: self.presentationData.strings.Appearance_ThemePreview_ChatList_3_Name, username: nil, photo: [], creationDate: 0, version: 0, participationStatus: .member, info: .group(.init(flags: [])), flags: [], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil, usernames: [], storiesHidden: nil, nameColor: nil, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, emojiStatus: nil, approximateBoostLevel: nil, subscriptionUntilDate: nil, verificationIconFileId: nil, sendPaidMessageStars: nil, linkedMonoforumId: nil))
|
let peer3: EnginePeer = .channel(TelegramChannel(id: PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(3)), accessHash: nil, title: self.presentationData.strings.Appearance_ThemePreview_ChatList_3_Name, username: nil, photo: [], creationDate: 0, version: 0, participationStatus: .member, info: .group(.init(flags: [])), flags: [], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil, usernames: [], storiesHidden: nil, nameColor: nil, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, emojiStatus: nil, approximateBoostLevel: nil, subscriptionUntilDate: nil, verificationIconFileId: nil, sendPaidMessageStars: nil, linkedMonoforumId: nil, linkedBotId: nil))
|
||||||
let peer3Author: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(4)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_3_AuthorName, 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))
|
let peer3Author: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(4)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_3_AuthorName, 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))
|
||||||
let peer4: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(4)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_4_Name, 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))
|
let peer4: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(4)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_4_Name, 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))
|
||||||
let peer5: EnginePeer = .channel(TelegramChannel(id: PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(5)), accessHash: nil, title: self.presentationData.strings.Appearance_ThemePreview_ChatList_5_Name, username: nil, photo: [], creationDate: 0, version: 0, participationStatus: .member, info: .broadcast(.init(flags: [])), flags: [], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil, usernames: [], storiesHidden: nil, nameColor: nil, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, emojiStatus: nil, approximateBoostLevel: nil, subscriptionUntilDate: nil, verificationIconFileId: nil, sendPaidMessageStars: nil, linkedMonoforumId: nil))
|
let peer5: EnginePeer = .channel(TelegramChannel(id: PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(5)), accessHash: nil, title: self.presentationData.strings.Appearance_ThemePreview_ChatList_5_Name, username: nil, photo: [], creationDate: 0, version: 0, participationStatus: .member, info: .broadcast(.init(flags: [])), flags: [], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil, usernames: [], storiesHidden: nil, nameColor: nil, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, emojiStatus: nil, approximateBoostLevel: nil, subscriptionUntilDate: nil, verificationIconFileId: nil, sendPaidMessageStars: nil, linkedMonoforumId: nil, linkedBotId: nil))
|
||||||
let peer6: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.SecretChat, id: PeerId.Id._internalFromInt64Value(5)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_6_Name, 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))
|
let peer6: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.SecretChat, id: PeerId.Id._internalFromInt64Value(5)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_6_Name, 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))
|
||||||
|
|
||||||
let timestamp = self.referenceTimestamp
|
let timestamp = self.referenceTimestamp
|
||||||
|
|||||||
@ -470,10 +470,10 @@ final class ThemePreviewControllerNode: ASDisplayNode, ASScrollViewDelegate {
|
|||||||
let selfPeer: EnginePeer = .user(TelegramUser(id: self.context.account.peerId, 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))
|
let selfPeer: EnginePeer = .user(TelegramUser(id: self.context.account.peerId, 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))
|
||||||
let peer1: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(1)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_1_Name, 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))
|
let peer1: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(1)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_1_Name, 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))
|
||||||
let peer2: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(2)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_2_Name, 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))
|
let peer2: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(2)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_2_Name, 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))
|
||||||
let peer3: EnginePeer = .channel(TelegramChannel(id: PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(3)), accessHash: nil, title: self.presentationData.strings.Appearance_ThemePreview_ChatList_3_Name, username: nil, photo: [], creationDate: 0, version: 0, participationStatus: .member, info: .group(.init(flags: [])), flags: [], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil, usernames: [], storiesHidden: nil, nameColor: nil, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, emojiStatus: nil, approximateBoostLevel: nil, subscriptionUntilDate: nil, verificationIconFileId: nil, sendPaidMessageStars: nil, linkedMonoforumId: nil))
|
let peer3: EnginePeer = .channel(TelegramChannel(id: PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(3)), accessHash: nil, title: self.presentationData.strings.Appearance_ThemePreview_ChatList_3_Name, username: nil, photo: [], creationDate: 0, version: 0, participationStatus: .member, info: .group(.init(flags: [])), flags: [], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil, usernames: [], storiesHidden: nil, nameColor: nil, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, emojiStatus: nil, approximateBoostLevel: nil, subscriptionUntilDate: nil, verificationIconFileId: nil, sendPaidMessageStars: nil, linkedMonoforumId: nil, linkedBotId: nil))
|
||||||
let peer3Author: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(4)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_3_AuthorName, 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))
|
let peer3Author: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(4)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_3_AuthorName, 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))
|
||||||
let peer4: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(4)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_4_Name, 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))
|
let peer4: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(4)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_4_Name, 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))
|
||||||
let peer5: EnginePeer = .channel(TelegramChannel(id: PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(5)), accessHash: nil, title: self.presentationData.strings.Appearance_ThemePreview_ChatList_5_Name, username: nil, photo: [], creationDate: 0, version: 0, participationStatus: .member, info: .broadcast(.init(flags: [])), flags: [], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil, usernames: [], storiesHidden: nil, nameColor: nil, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, emojiStatus: nil, approximateBoostLevel: nil, subscriptionUntilDate: nil, verificationIconFileId: nil, sendPaidMessageStars: nil, linkedMonoforumId: nil))
|
let peer5: EnginePeer = .channel(TelegramChannel(id: PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(5)), accessHash: nil, title: self.presentationData.strings.Appearance_ThemePreview_ChatList_5_Name, username: nil, photo: [], creationDate: 0, version: 0, participationStatus: .member, info: .broadcast(.init(flags: [])), flags: [], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil, usernames: [], storiesHidden: nil, nameColor: nil, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, emojiStatus: nil, approximateBoostLevel: nil, subscriptionUntilDate: nil, verificationIconFileId: nil, sendPaidMessageStars: nil, linkedMonoforumId: nil, linkedBotId: nil))
|
||||||
let peer6: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.SecretChat, id: PeerId.Id._internalFromInt64Value(5)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_6_Name, 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))
|
let peer6: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.SecretChat, id: PeerId.Id._internalFromInt64Value(5)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_6_Name, 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))
|
||||||
let peer7: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(6)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_7_Name, 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))
|
let peer7: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(6)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_7_Name, 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))
|
||||||
|
|
||||||
|
|||||||
@ -603,7 +603,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|||||||
dict[-1434950843] = { return Api.MessageAction.parse_messageActionSetChatTheme($0) }
|
dict[-1434950843] = { return Api.MessageAction.parse_messageActionSetChatTheme($0) }
|
||||||
dict[1348510708] = { return Api.MessageAction.parse_messageActionSetChatWallPaper($0) }
|
dict[1348510708] = { return Api.MessageAction.parse_messageActionSetChatWallPaper($0) }
|
||||||
dict[1007897979] = { return Api.MessageAction.parse_messageActionSetMessagesTTL($0) }
|
dict[1007897979] = { return Api.MessageAction.parse_messageActionSetMessagesTTL($0) }
|
||||||
dict[1192749220] = { return Api.MessageAction.parse_messageActionStarGift($0) }
|
dict[-956938735] = { return Api.MessageAction.parse_messageActionStarGift($0) }
|
||||||
dict[888627955] = { return Api.MessageAction.parse_messageActionStarGiftUnique($0) }
|
dict[888627955] = { return Api.MessageAction.parse_messageActionStarGiftUnique($0) }
|
||||||
dict[1474192222] = { return Api.MessageAction.parse_messageActionSuggestProfilePhoto($0) }
|
dict[1474192222] = { return Api.MessageAction.parse_messageActionSuggestProfilePhoto($0) }
|
||||||
dict[-293988970] = { return Api.MessageAction.parse_messageActionSuggestedPostApproval($0) }
|
dict[-293988970] = { return Api.MessageAction.parse_messageActionSuggestedPostApproval($0) }
|
||||||
@ -946,7 +946,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|||||||
dict[1124938064] = { return Api.SponsoredMessageReportOption.parse_sponsoredMessageReportOption($0) }
|
dict[1124938064] = { return Api.SponsoredMessageReportOption.parse_sponsoredMessageReportOption($0) }
|
||||||
dict[-963180333] = { return Api.SponsoredPeer.parse_sponsoredPeer($0) }
|
dict[-963180333] = { return Api.SponsoredPeer.parse_sponsoredPeer($0) }
|
||||||
dict[12386139] = { return Api.StarGift.parse_starGift($0) }
|
dict[12386139] = { return Api.StarGift.parse_starGift($0) }
|
||||||
dict[975654224] = { return Api.StarGift.parse_starGiftUnique($0) }
|
dict[648369470] = { return Api.StarGift.parse_starGiftUnique($0) }
|
||||||
dict[-650279524] = { return Api.StarGiftAttribute.parse_starGiftAttributeBackdrop($0) }
|
dict[-650279524] = { return Api.StarGiftAttribute.parse_starGiftAttributeBackdrop($0) }
|
||||||
dict[970559507] = { return Api.StarGiftAttribute.parse_starGiftAttributeModel($0) }
|
dict[970559507] = { return Api.StarGiftAttribute.parse_starGiftAttributeModel($0) }
|
||||||
dict[-524291476] = { return Api.StarGiftAttribute.parse_starGiftAttributeOriginalDetails($0) }
|
dict[-524291476] = { return Api.StarGiftAttribute.parse_starGiftAttributeOriginalDetails($0) }
|
||||||
@ -1182,7 +1182,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|||||||
dict[-1831650802] = { return Api.UrlAuthResult.parse_urlAuthResultRequest($0) }
|
dict[-1831650802] = { return Api.UrlAuthResult.parse_urlAuthResultRequest($0) }
|
||||||
dict[34280482] = { return Api.User.parse_user($0) }
|
dict[34280482] = { return Api.User.parse_user($0) }
|
||||||
dict[-742634630] = { return Api.User.parse_userEmpty($0) }
|
dict[-742634630] = { return Api.User.parse_userEmpty($0) }
|
||||||
dict[1323346321] = { return Api.UserFull.parse_userFull($0) }
|
dict[-510712709] = { return Api.UserFull.parse_userFull($0) }
|
||||||
dict[-2100168954] = { return Api.UserProfilePhoto.parse_userProfilePhoto($0) }
|
dict[-2100168954] = { return Api.UserProfilePhoto.parse_userProfilePhoto($0) }
|
||||||
dict[1326562017] = { return Api.UserProfilePhoto.parse_userProfilePhotoEmpty($0) }
|
dict[1326562017] = { return Api.UserProfilePhoto.parse_userProfilePhotoEmpty($0) }
|
||||||
dict[164646985] = { return Api.UserStatus.parse_userStatusEmpty($0) }
|
dict[164646985] = { return Api.UserStatus.parse_userStatusEmpty($0) }
|
||||||
@ -1448,6 +1448,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|||||||
dict[1822222573] = { return Api.payments.StarsStatus.parse_starsStatus($0) }
|
dict[1822222573] = { return Api.payments.StarsStatus.parse_starsStatus($0) }
|
||||||
dict[-1261053863] = { return Api.payments.SuggestedStarRefBots.parse_suggestedStarRefBots($0) }
|
dict[-1261053863] = { return Api.payments.SuggestedStarRefBots.parse_suggestedStarRefBots($0) }
|
||||||
dict[-895289845] = { return Api.payments.UniqueStarGift.parse_uniqueStarGift($0) }
|
dict[-895289845] = { return Api.payments.UniqueStarGift.parse_uniqueStarGift($0) }
|
||||||
|
dict[1362093126] = { return Api.payments.UniqueStarGiftValueInfo.parse_uniqueStarGiftValueInfo($0) }
|
||||||
dict[-784000893] = { return Api.payments.ValidatedRequestedInfo.parse_validatedRequestedInfo($0) }
|
dict[-784000893] = { return Api.payments.ValidatedRequestedInfo.parse_validatedRequestedInfo($0) }
|
||||||
dict[541839704] = { return Api.phone.ExportedGroupCallInvite.parse_exportedGroupCallInvite($0) }
|
dict[541839704] = { return Api.phone.ExportedGroupCallInvite.parse_exportedGroupCallInvite($0) }
|
||||||
dict[-1636664659] = { return Api.phone.GroupCall.parse_groupCall($0) }
|
dict[-1636664659] = { return Api.phone.GroupCall.parse_groupCall($0) }
|
||||||
@ -2580,6 +2581,8 @@ public extension Api {
|
|||||||
_1.serialize(buffer, boxed)
|
_1.serialize(buffer, boxed)
|
||||||
case let _1 as Api.payments.UniqueStarGift:
|
case let _1 as Api.payments.UniqueStarGift:
|
||||||
_1.serialize(buffer, boxed)
|
_1.serialize(buffer, boxed)
|
||||||
|
case let _1 as Api.payments.UniqueStarGiftValueInfo:
|
||||||
|
_1.serialize(buffer, boxed)
|
||||||
case let _1 as Api.payments.ValidatedRequestedInfo:
|
case let _1 as Api.payments.ValidatedRequestedInfo:
|
||||||
_1.serialize(buffer, boxed)
|
_1.serialize(buffer, boxed)
|
||||||
case let _1 as Api.phone.ExportedGroupCallInvite:
|
case let _1 as Api.phone.ExportedGroupCallInvite:
|
||||||
|
|||||||
@ -393,7 +393,7 @@ public extension Api {
|
|||||||
case messageActionSetChatTheme(emoticon: String)
|
case messageActionSetChatTheme(emoticon: String)
|
||||||
case messageActionSetChatWallPaper(flags: Int32, wallpaper: Api.WallPaper)
|
case messageActionSetChatWallPaper(flags: Int32, wallpaper: Api.WallPaper)
|
||||||
case messageActionSetMessagesTTL(flags: Int32, period: Int32, autoSettingFrom: Int64?)
|
case messageActionSetMessagesTTL(flags: Int32, period: Int32, autoSettingFrom: Int64?)
|
||||||
case messageActionStarGift(flags: Int32, gift: Api.StarGift, message: Api.TextWithEntities?, convertStars: Int64?, upgradeMsgId: Int32?, upgradeStars: Int64?, fromId: Api.Peer?, peer: Api.Peer?, savedId: Int64?)
|
case messageActionStarGift(flags: Int32, gift: Api.StarGift, message: Api.TextWithEntities?, convertStars: Int64?, upgradeMsgId: Int32?, upgradeStars: Int64?, fromId: Api.Peer?, peer: Api.Peer?, savedId: Int64?, prepaidUpgradeHash: String?)
|
||||||
case messageActionStarGiftUnique(flags: Int32, gift: Api.StarGift, canExportAt: Int32?, transferStars: Int64?, fromId: Api.Peer?, peer: Api.Peer?, savedId: Int64?, resaleAmount: Api.StarsAmount?, canTransferAt: Int32?, canResellAt: Int32?)
|
case messageActionStarGiftUnique(flags: Int32, gift: Api.StarGift, canExportAt: Int32?, transferStars: Int64?, fromId: Api.Peer?, peer: Api.Peer?, savedId: Int64?, resaleAmount: Api.StarsAmount?, canTransferAt: Int32?, canResellAt: Int32?)
|
||||||
case messageActionSuggestProfilePhoto(photo: Api.Photo)
|
case messageActionSuggestProfilePhoto(photo: Api.Photo)
|
||||||
case messageActionSuggestedPostApproval(flags: Int32, rejectComment: String?, scheduleDate: Int32?, price: Api.StarsAmount?)
|
case messageActionSuggestedPostApproval(flags: Int32, rejectComment: String?, scheduleDate: Int32?, price: Api.StarsAmount?)
|
||||||
@ -783,9 +783,9 @@ public extension Api {
|
|||||||
serializeInt32(period, buffer: buffer, boxed: false)
|
serializeInt32(period, buffer: buffer, boxed: false)
|
||||||
if Int(flags) & Int(1 << 0) != 0 {serializeInt64(autoSettingFrom!, buffer: buffer, boxed: false)}
|
if Int(flags) & Int(1 << 0) != 0 {serializeInt64(autoSettingFrom!, buffer: buffer, boxed: false)}
|
||||||
break
|
break
|
||||||
case .messageActionStarGift(let flags, let gift, let message, let convertStars, let upgradeMsgId, let upgradeStars, let fromId, let peer, let savedId):
|
case .messageActionStarGift(let flags, let gift, let message, let convertStars, let upgradeMsgId, let upgradeStars, let fromId, let peer, let savedId, let prepaidUpgradeHash):
|
||||||
if boxed {
|
if boxed {
|
||||||
buffer.appendInt32(1192749220)
|
buffer.appendInt32(-956938735)
|
||||||
}
|
}
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
gift.serialize(buffer, true)
|
gift.serialize(buffer, true)
|
||||||
@ -796,6 +796,7 @@ public extension Api {
|
|||||||
if Int(flags) & Int(1 << 11) != 0 {fromId!.serialize(buffer, true)}
|
if Int(flags) & Int(1 << 11) != 0 {fromId!.serialize(buffer, true)}
|
||||||
if Int(flags) & Int(1 << 12) != 0 {peer!.serialize(buffer, true)}
|
if Int(flags) & Int(1 << 12) != 0 {peer!.serialize(buffer, true)}
|
||||||
if Int(flags) & Int(1 << 12) != 0 {serializeInt64(savedId!, buffer: buffer, boxed: false)}
|
if Int(flags) & Int(1 << 12) != 0 {serializeInt64(savedId!, buffer: buffer, boxed: false)}
|
||||||
|
if Int(flags) & Int(1 << 14) != 0 {serializeString(prepaidUpgradeHash!, buffer: buffer, boxed: false)}
|
||||||
break
|
break
|
||||||
case .messageActionStarGiftUnique(let flags, let gift, let canExportAt, let transferStars, let fromId, let peer, let savedId, let resaleAmount, let canTransferAt, let canResellAt):
|
case .messageActionStarGiftUnique(let flags, let gift, let canExportAt, let transferStars, let fromId, let peer, let savedId, let resaleAmount, let canTransferAt, let canResellAt):
|
||||||
if boxed {
|
if boxed {
|
||||||
@ -991,8 +992,8 @@ public extension Api {
|
|||||||
return ("messageActionSetChatWallPaper", [("flags", flags as Any), ("wallpaper", wallpaper as Any)])
|
return ("messageActionSetChatWallPaper", [("flags", flags as Any), ("wallpaper", wallpaper as Any)])
|
||||||
case .messageActionSetMessagesTTL(let flags, let period, let autoSettingFrom):
|
case .messageActionSetMessagesTTL(let flags, let period, let autoSettingFrom):
|
||||||
return ("messageActionSetMessagesTTL", [("flags", flags as Any), ("period", period as Any), ("autoSettingFrom", autoSettingFrom as Any)])
|
return ("messageActionSetMessagesTTL", [("flags", flags as Any), ("period", period as Any), ("autoSettingFrom", autoSettingFrom as Any)])
|
||||||
case .messageActionStarGift(let flags, let gift, let message, let convertStars, let upgradeMsgId, let upgradeStars, let fromId, let peer, let savedId):
|
case .messageActionStarGift(let flags, let gift, let message, let convertStars, let upgradeMsgId, let upgradeStars, let fromId, let peer, let savedId, let prepaidUpgradeHash):
|
||||||
return ("messageActionStarGift", [("flags", flags as Any), ("gift", gift as Any), ("message", message as Any), ("convertStars", convertStars as Any), ("upgradeMsgId", upgradeMsgId as Any), ("upgradeStars", upgradeStars as Any), ("fromId", fromId as Any), ("peer", peer as Any), ("savedId", savedId as Any)])
|
return ("messageActionStarGift", [("flags", flags as Any), ("gift", gift as Any), ("message", message as Any), ("convertStars", convertStars as Any), ("upgradeMsgId", upgradeMsgId as Any), ("upgradeStars", upgradeStars as Any), ("fromId", fromId as Any), ("peer", peer as Any), ("savedId", savedId as Any), ("prepaidUpgradeHash", prepaidUpgradeHash as Any)])
|
||||||
case .messageActionStarGiftUnique(let flags, let gift, let canExportAt, let transferStars, let fromId, let peer, let savedId, let resaleAmount, let canTransferAt, let canResellAt):
|
case .messageActionStarGiftUnique(let flags, let gift, let canExportAt, let transferStars, let fromId, let peer, let savedId, let resaleAmount, let canTransferAt, let canResellAt):
|
||||||
return ("messageActionStarGiftUnique", [("flags", flags as Any), ("gift", gift as Any), ("canExportAt", canExportAt as Any), ("transferStars", transferStars as Any), ("fromId", fromId as Any), ("peer", peer as Any), ("savedId", savedId as Any), ("resaleAmount", resaleAmount as Any), ("canTransferAt", canTransferAt as Any), ("canResellAt", canResellAt as Any)])
|
return ("messageActionStarGiftUnique", [("flags", flags as Any), ("gift", gift as Any), ("canExportAt", canExportAt as Any), ("transferStars", transferStars as Any), ("fromId", fromId as Any), ("peer", peer as Any), ("savedId", savedId as Any), ("resaleAmount", resaleAmount as Any), ("canTransferAt", canTransferAt as Any), ("canResellAt", canResellAt as Any)])
|
||||||
case .messageActionSuggestProfilePhoto(let photo):
|
case .messageActionSuggestProfilePhoto(let photo):
|
||||||
@ -1755,6 +1756,8 @@ public extension Api {
|
|||||||
} }
|
} }
|
||||||
var _9: Int64?
|
var _9: Int64?
|
||||||
if Int(_1!) & Int(1 << 12) != 0 {_9 = reader.readInt64() }
|
if Int(_1!) & Int(1 << 12) != 0 {_9 = reader.readInt64() }
|
||||||
|
var _10: String?
|
||||||
|
if Int(_1!) & Int(1 << 14) != 0 {_10 = parseString(reader) }
|
||||||
let _c1 = _1 != nil
|
let _c1 = _1 != nil
|
||||||
let _c2 = _2 != nil
|
let _c2 = _2 != nil
|
||||||
let _c3 = (Int(_1!) & Int(1 << 1) == 0) || _3 != nil
|
let _c3 = (Int(_1!) & Int(1 << 1) == 0) || _3 != nil
|
||||||
@ -1764,8 +1767,9 @@ public extension Api {
|
|||||||
let _c7 = (Int(_1!) & Int(1 << 11) == 0) || _7 != nil
|
let _c7 = (Int(_1!) & Int(1 << 11) == 0) || _7 != nil
|
||||||
let _c8 = (Int(_1!) & Int(1 << 12) == 0) || _8 != nil
|
let _c8 = (Int(_1!) & Int(1 << 12) == 0) || _8 != nil
|
||||||
let _c9 = (Int(_1!) & Int(1 << 12) == 0) || _9 != nil
|
let _c9 = (Int(_1!) & Int(1 << 12) == 0) || _9 != nil
|
||||||
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 {
|
let _c10 = (Int(_1!) & Int(1 << 14) == 0) || _10 != nil
|
||||||
return Api.MessageAction.messageActionStarGift(flags: _1!, gift: _2!, message: _3, convertStars: _4, upgradeMsgId: _5, upgradeStars: _6, fromId: _7, peer: _8, savedId: _9)
|
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 {
|
||||||
|
return Api.MessageAction.messageActionStarGift(flags: _1!, gift: _2!, message: _3, convertStars: _4, upgradeMsgId: _5, upgradeStars: _6, fromId: _7, peer: _8, savedId: _9, prepaidUpgradeHash: _10)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@ -637,7 +637,7 @@ public extension Api {
|
|||||||
public extension Api {
|
public extension Api {
|
||||||
enum StarGift: TypeConstructorDescription {
|
enum StarGift: TypeConstructorDescription {
|
||||||
case starGift(flags: Int32, id: Int64, sticker: Api.Document, stars: Int64, availabilityRemains: Int32?, availabilityTotal: Int32?, availabilityResale: Int64?, convertStars: Int64, firstSaleDate: Int32?, lastSaleDate: Int32?, upgradeStars: Int64?, resellMinStars: Int64?, title: String?, releasedBy: Api.Peer?, perUserTotal: Int32?, perUserRemains: Int32?)
|
case starGift(flags: Int32, id: Int64, sticker: Api.Document, stars: Int64, availabilityRemains: Int32?, availabilityTotal: Int32?, availabilityResale: Int64?, convertStars: Int64, firstSaleDate: Int32?, lastSaleDate: Int32?, upgradeStars: Int64?, resellMinStars: Int64?, title: String?, releasedBy: Api.Peer?, perUserTotal: Int32?, perUserRemains: Int32?)
|
||||||
case starGiftUnique(flags: Int32, id: Int64, title: String, slug: String, num: Int32, ownerId: Api.Peer?, ownerName: String?, ownerAddress: String?, attributes: [Api.StarGiftAttribute], availabilityIssued: Int32, availabilityTotal: Int32, giftAddress: String?, resellAmount: [Api.StarsAmount]?, releasedBy: Api.Peer?)
|
case starGiftUnique(flags: Int32, id: Int64, giftId: Int64, title: String, slug: String, num: Int32, ownerId: Api.Peer?, ownerName: String?, ownerAddress: String?, attributes: [Api.StarGiftAttribute], availabilityIssued: Int32, availabilityTotal: Int32, giftAddress: String?, resellAmount: [Api.StarsAmount]?, releasedBy: Api.Peer?, valueAmount: Int64?, valueCurrency: String?)
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
switch self {
|
switch self {
|
||||||
@ -662,12 +662,13 @@ public extension Api {
|
|||||||
if Int(flags) & Int(1 << 8) != 0 {serializeInt32(perUserTotal!, buffer: buffer, boxed: false)}
|
if Int(flags) & Int(1 << 8) != 0 {serializeInt32(perUserTotal!, buffer: buffer, boxed: false)}
|
||||||
if Int(flags) & Int(1 << 8) != 0 {serializeInt32(perUserRemains!, buffer: buffer, boxed: false)}
|
if Int(flags) & Int(1 << 8) != 0 {serializeInt32(perUserRemains!, buffer: buffer, boxed: false)}
|
||||||
break
|
break
|
||||||
case .starGiftUnique(let flags, let id, let title, let slug, let num, let ownerId, let ownerName, let ownerAddress, let attributes, let availabilityIssued, let availabilityTotal, let giftAddress, let resellAmount, let releasedBy):
|
case .starGiftUnique(let flags, let id, let giftId, let title, let slug, let num, let ownerId, let ownerName, let ownerAddress, let attributes, let availabilityIssued, let availabilityTotal, let giftAddress, let resellAmount, let releasedBy, let valueAmount, let valueCurrency):
|
||||||
if boxed {
|
if boxed {
|
||||||
buffer.appendInt32(975654224)
|
buffer.appendInt32(648369470)
|
||||||
}
|
}
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
serializeInt64(id, buffer: buffer, boxed: false)
|
serializeInt64(id, buffer: buffer, boxed: false)
|
||||||
|
serializeInt64(giftId, buffer: buffer, boxed: false)
|
||||||
serializeString(title, buffer: buffer, boxed: false)
|
serializeString(title, buffer: buffer, boxed: false)
|
||||||
serializeString(slug, buffer: buffer, boxed: false)
|
serializeString(slug, buffer: buffer, boxed: false)
|
||||||
serializeInt32(num, buffer: buffer, boxed: false)
|
serializeInt32(num, buffer: buffer, boxed: false)
|
||||||
@ -688,6 +689,8 @@ public extension Api {
|
|||||||
item.serialize(buffer, true)
|
item.serialize(buffer, true)
|
||||||
}}
|
}}
|
||||||
if Int(flags) & Int(1 << 5) != 0 {releasedBy!.serialize(buffer, true)}
|
if Int(flags) & Int(1 << 5) != 0 {releasedBy!.serialize(buffer, true)}
|
||||||
|
if Int(flags) & Int(1 << 8) != 0 {serializeInt64(valueAmount!, buffer: buffer, boxed: false)}
|
||||||
|
if Int(flags) & Int(1 << 8) != 0 {serializeString(valueCurrency!, buffer: buffer, boxed: false)}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -696,8 +699,8 @@ public extension Api {
|
|||||||
switch self {
|
switch self {
|
||||||
case .starGift(let flags, let id, let sticker, let stars, let availabilityRemains, let availabilityTotal, let availabilityResale, let convertStars, let firstSaleDate, let lastSaleDate, let upgradeStars, let resellMinStars, let title, let releasedBy, let perUserTotal, let perUserRemains):
|
case .starGift(let flags, let id, let sticker, let stars, let availabilityRemains, let availabilityTotal, let availabilityResale, let convertStars, let firstSaleDate, let lastSaleDate, let upgradeStars, let resellMinStars, let title, let releasedBy, let perUserTotal, let perUserRemains):
|
||||||
return ("starGift", [("flags", flags as Any), ("id", id as Any), ("sticker", sticker as Any), ("stars", stars as Any), ("availabilityRemains", availabilityRemains as Any), ("availabilityTotal", availabilityTotal as Any), ("availabilityResale", availabilityResale as Any), ("convertStars", convertStars as Any), ("firstSaleDate", firstSaleDate as Any), ("lastSaleDate", lastSaleDate as Any), ("upgradeStars", upgradeStars as Any), ("resellMinStars", resellMinStars as Any), ("title", title as Any), ("releasedBy", releasedBy as Any), ("perUserTotal", perUserTotal as Any), ("perUserRemains", perUserRemains as Any)])
|
return ("starGift", [("flags", flags as Any), ("id", id as Any), ("sticker", sticker as Any), ("stars", stars as Any), ("availabilityRemains", availabilityRemains as Any), ("availabilityTotal", availabilityTotal as Any), ("availabilityResale", availabilityResale as Any), ("convertStars", convertStars as Any), ("firstSaleDate", firstSaleDate as Any), ("lastSaleDate", lastSaleDate as Any), ("upgradeStars", upgradeStars as Any), ("resellMinStars", resellMinStars as Any), ("title", title as Any), ("releasedBy", releasedBy as Any), ("perUserTotal", perUserTotal as Any), ("perUserRemains", perUserRemains as Any)])
|
||||||
case .starGiftUnique(let flags, let id, let title, let slug, let num, let ownerId, let ownerName, let ownerAddress, let attributes, let availabilityIssued, let availabilityTotal, let giftAddress, let resellAmount, let releasedBy):
|
case .starGiftUnique(let flags, let id, let giftId, let title, let slug, let num, let ownerId, let ownerName, let ownerAddress, let attributes, let availabilityIssued, let availabilityTotal, let giftAddress, let resellAmount, let releasedBy, let valueAmount, let valueCurrency):
|
||||||
return ("starGiftUnique", [("flags", flags as Any), ("id", id as Any), ("title", title as Any), ("slug", slug as Any), ("num", num as Any), ("ownerId", ownerId as Any), ("ownerName", ownerName as Any), ("ownerAddress", ownerAddress as Any), ("attributes", attributes as Any), ("availabilityIssued", availabilityIssued as Any), ("availabilityTotal", availabilityTotal as Any), ("giftAddress", giftAddress as Any), ("resellAmount", resellAmount as Any), ("releasedBy", releasedBy as Any)])
|
return ("starGiftUnique", [("flags", flags as Any), ("id", id as Any), ("giftId", giftId as Any), ("title", title as Any), ("slug", slug as Any), ("num", num as Any), ("ownerId", ownerId as Any), ("ownerName", ownerName as Any), ("ownerAddress", ownerAddress as Any), ("attributes", attributes as Any), ("availabilityIssued", availabilityIssued as Any), ("availabilityTotal", availabilityTotal as Any), ("giftAddress", giftAddress as Any), ("resellAmount", resellAmount as Any), ("releasedBy", releasedBy as Any), ("valueAmount", valueAmount as Any), ("valueCurrency", valueCurrency as Any)])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -766,54 +769,63 @@ public extension Api {
|
|||||||
_1 = reader.readInt32()
|
_1 = reader.readInt32()
|
||||||
var _2: Int64?
|
var _2: Int64?
|
||||||
_2 = reader.readInt64()
|
_2 = reader.readInt64()
|
||||||
var _3: String?
|
var _3: Int64?
|
||||||
_3 = parseString(reader)
|
_3 = reader.readInt64()
|
||||||
var _4: String?
|
var _4: String?
|
||||||
_4 = parseString(reader)
|
_4 = parseString(reader)
|
||||||
var _5: Int32?
|
var _5: String?
|
||||||
_5 = reader.readInt32()
|
_5 = parseString(reader)
|
||||||
var _6: Api.Peer?
|
var _6: Int32?
|
||||||
|
_6 = reader.readInt32()
|
||||||
|
var _7: Api.Peer?
|
||||||
if Int(_1!) & Int(1 << 0) != 0 {if let signature = reader.readInt32() {
|
if Int(_1!) & Int(1 << 0) != 0 {if let signature = reader.readInt32() {
|
||||||
_6 = Api.parse(reader, signature: signature) as? Api.Peer
|
_7 = Api.parse(reader, signature: signature) as? Api.Peer
|
||||||
} }
|
} }
|
||||||
var _7: String?
|
|
||||||
if Int(_1!) & Int(1 << 1) != 0 {_7 = parseString(reader) }
|
|
||||||
var _8: String?
|
var _8: String?
|
||||||
if Int(_1!) & Int(1 << 2) != 0 {_8 = parseString(reader) }
|
if Int(_1!) & Int(1 << 1) != 0 {_8 = parseString(reader) }
|
||||||
var _9: [Api.StarGiftAttribute]?
|
var _9: String?
|
||||||
|
if Int(_1!) & Int(1 << 2) != 0 {_9 = parseString(reader) }
|
||||||
|
var _10: [Api.StarGiftAttribute]?
|
||||||
if let _ = reader.readInt32() {
|
if let _ = reader.readInt32() {
|
||||||
_9 = Api.parseVector(reader, elementSignature: 0, elementType: Api.StarGiftAttribute.self)
|
_10 = Api.parseVector(reader, elementSignature: 0, elementType: Api.StarGiftAttribute.self)
|
||||||
}
|
}
|
||||||
var _10: Int32?
|
|
||||||
_10 = reader.readInt32()
|
|
||||||
var _11: Int32?
|
var _11: Int32?
|
||||||
_11 = reader.readInt32()
|
_11 = reader.readInt32()
|
||||||
var _12: String?
|
var _12: Int32?
|
||||||
if Int(_1!) & Int(1 << 3) != 0 {_12 = parseString(reader) }
|
_12 = reader.readInt32()
|
||||||
var _13: [Api.StarsAmount]?
|
var _13: String?
|
||||||
|
if Int(_1!) & Int(1 << 3) != 0 {_13 = parseString(reader) }
|
||||||
|
var _14: [Api.StarsAmount]?
|
||||||
if Int(_1!) & Int(1 << 4) != 0 {if let _ = reader.readInt32() {
|
if Int(_1!) & Int(1 << 4) != 0 {if let _ = reader.readInt32() {
|
||||||
_13 = Api.parseVector(reader, elementSignature: 0, elementType: Api.StarsAmount.self)
|
_14 = Api.parseVector(reader, elementSignature: 0, elementType: Api.StarsAmount.self)
|
||||||
} }
|
} }
|
||||||
var _14: Api.Peer?
|
var _15: Api.Peer?
|
||||||
if Int(_1!) & Int(1 << 5) != 0 {if let signature = reader.readInt32() {
|
if Int(_1!) & Int(1 << 5) != 0 {if let signature = reader.readInt32() {
|
||||||
_14 = Api.parse(reader, signature: signature) as? Api.Peer
|
_15 = Api.parse(reader, signature: signature) as? Api.Peer
|
||||||
} }
|
} }
|
||||||
|
var _16: Int64?
|
||||||
|
if Int(_1!) & Int(1 << 8) != 0 {_16 = reader.readInt64() }
|
||||||
|
var _17: String?
|
||||||
|
if Int(_1!) & Int(1 << 8) != 0 {_17 = parseString(reader) }
|
||||||
let _c1 = _1 != nil
|
let _c1 = _1 != nil
|
||||||
let _c2 = _2 != nil
|
let _c2 = _2 != nil
|
||||||
let _c3 = _3 != nil
|
let _c3 = _3 != nil
|
||||||
let _c4 = _4 != nil
|
let _c4 = _4 != nil
|
||||||
let _c5 = _5 != nil
|
let _c5 = _5 != nil
|
||||||
let _c6 = (Int(_1!) & Int(1 << 0) == 0) || _6 != nil
|
let _c6 = _6 != nil
|
||||||
let _c7 = (Int(_1!) & Int(1 << 1) == 0) || _7 != nil
|
let _c7 = (Int(_1!) & Int(1 << 0) == 0) || _7 != nil
|
||||||
let _c8 = (Int(_1!) & Int(1 << 2) == 0) || _8 != nil
|
let _c8 = (Int(_1!) & Int(1 << 1) == 0) || _8 != nil
|
||||||
let _c9 = _9 != nil
|
let _c9 = (Int(_1!) & Int(1 << 2) == 0) || _9 != nil
|
||||||
let _c10 = _10 != nil
|
let _c10 = _10 != nil
|
||||||
let _c11 = _11 != nil
|
let _c11 = _11 != nil
|
||||||
let _c12 = (Int(_1!) & Int(1 << 3) == 0) || _12 != nil
|
let _c12 = _12 != nil
|
||||||
let _c13 = (Int(_1!) & Int(1 << 4) == 0) || _13 != nil
|
let _c13 = (Int(_1!) & Int(1 << 3) == 0) || _13 != nil
|
||||||
let _c14 = (Int(_1!) & Int(1 << 5) == 0) || _14 != nil
|
let _c14 = (Int(_1!) & Int(1 << 4) == 0) || _14 != nil
|
||||||
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 && _c11 && _c12 && _c13 && _c14 {
|
let _c15 = (Int(_1!) & Int(1 << 5) == 0) || _15 != nil
|
||||||
return Api.StarGift.starGiftUnique(flags: _1!, id: _2!, title: _3!, slug: _4!, num: _5!, ownerId: _6, ownerName: _7, ownerAddress: _8, attributes: _9!, availabilityIssued: _10!, availabilityTotal: _11!, giftAddress: _12, resellAmount: _13, releasedBy: _14)
|
let _c16 = (Int(_1!) & Int(1 << 8) == 0) || _16 != nil
|
||||||
|
let _c17 = (Int(_1!) & Int(1 << 8) == 0) || _17 != nil
|
||||||
|
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 && _c11 && _c12 && _c13 && _c14 && _c15 && _c16 && _c17 {
|
||||||
|
return Api.StarGift.starGiftUnique(flags: _1!, id: _2!, giftId: _3!, title: _4!, slug: _5!, num: _6!, ownerId: _7, ownerName: _8, ownerAddress: _9, attributes: _10!, availabilityIssued: _11!, availabilityTotal: _12!, giftAddress: _13, resellAmount: _14, releasedBy: _15, valueAmount: _16, valueCurrency: _17)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@ -620,7 +620,7 @@ public extension Api {
|
|||||||
switch self {
|
switch self {
|
||||||
case .userFull(let flags, let flags2, let id, let about, let settings, let personalPhoto, let profilePhoto, let fallbackPhoto, let notifySettings, let botInfo, let pinnedMsgId, let commonChatsCount, let folderId, let ttlPeriod, let themeEmoticon, let privateForwardName, let botGroupAdminRights, let botBroadcastAdminRights, let wallpaper, let stories, let businessWorkHours, let businessLocation, let businessGreetingMessage, let businessAwayMessage, let businessIntro, let birthday, let personalChannelId, let personalChannelMessage, let stargiftsCount, let starrefProgram, let botVerification, let sendPaidMessagesStars, let disallowedGifts, let starsRating, let starsMyPendingRating, let starsMyPendingRatingDate, let linkedBotforumChannelId):
|
case .userFull(let flags, let flags2, let id, let about, let settings, let personalPhoto, let profilePhoto, let fallbackPhoto, let notifySettings, let botInfo, let pinnedMsgId, let commonChatsCount, let folderId, let ttlPeriod, let themeEmoticon, let privateForwardName, let botGroupAdminRights, let botBroadcastAdminRights, let wallpaper, let stories, let businessWorkHours, let businessLocation, let businessGreetingMessage, let businessAwayMessage, let businessIntro, let birthday, let personalChannelId, let personalChannelMessage, let stargiftsCount, let starrefProgram, let botVerification, let sendPaidMessagesStars, let disallowedGifts, let starsRating, let starsMyPendingRating, let starsMyPendingRatingDate, let linkedBotforumChannelId):
|
||||||
if boxed {
|
if boxed {
|
||||||
buffer.appendInt32(1323346321)
|
buffer.appendInt32(-510712709)
|
||||||
}
|
}
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
serializeInt32(flags2, buffer: buffer, boxed: false)
|
serializeInt32(flags2, buffer: buffer, boxed: false)
|
||||||
@ -658,7 +658,7 @@ public extension Api {
|
|||||||
if Int(flags2) & Int(1 << 17) != 0 {starsRating!.serialize(buffer, true)}
|
if Int(flags2) & Int(1 << 17) != 0 {starsRating!.serialize(buffer, true)}
|
||||||
if Int(flags2) & Int(1 << 18) != 0 {starsMyPendingRating!.serialize(buffer, true)}
|
if Int(flags2) & Int(1 << 18) != 0 {starsMyPendingRating!.serialize(buffer, true)}
|
||||||
if Int(flags2) & Int(1 << 18) != 0 {serializeInt32(starsMyPendingRatingDate!, buffer: buffer, boxed: false)}
|
if Int(flags2) & Int(1 << 18) != 0 {serializeInt32(starsMyPendingRatingDate!, buffer: buffer, boxed: false)}
|
||||||
if Int(flags) & Int(1 << 19) != 0 {serializeInt64(linkedBotforumChannelId!, buffer: buffer, boxed: false)}
|
if Int(flags2) & Int(1 << 19) != 0 {serializeInt64(linkedBotforumChannelId!, buffer: buffer, boxed: false)}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -786,7 +786,7 @@ public extension Api {
|
|||||||
var _36: Int32?
|
var _36: Int32?
|
||||||
if Int(_2!) & Int(1 << 18) != 0 {_36 = reader.readInt32() }
|
if Int(_2!) & Int(1 << 18) != 0 {_36 = reader.readInt32() }
|
||||||
var _37: Int64?
|
var _37: Int64?
|
||||||
if Int(_1!) & Int(1 << 19) != 0 {_37 = reader.readInt64() }
|
if Int(_2!) & Int(1 << 19) != 0 {_37 = reader.readInt64() }
|
||||||
let _c1 = _1 != nil
|
let _c1 = _1 != nil
|
||||||
let _c2 = _2 != nil
|
let _c2 = _2 != nil
|
||||||
let _c3 = _3 != nil
|
let _c3 = _3 != nil
|
||||||
@ -823,7 +823,7 @@ public extension Api {
|
|||||||
let _c34 = (Int(_2!) & Int(1 << 17) == 0) || _34 != nil
|
let _c34 = (Int(_2!) & Int(1 << 17) == 0) || _34 != nil
|
||||||
let _c35 = (Int(_2!) & Int(1 << 18) == 0) || _35 != nil
|
let _c35 = (Int(_2!) & Int(1 << 18) == 0) || _35 != nil
|
||||||
let _c36 = (Int(_2!) & Int(1 << 18) == 0) || _36 != nil
|
let _c36 = (Int(_2!) & Int(1 << 18) == 0) || _36 != nil
|
||||||
let _c37 = (Int(_1!) & Int(1 << 19) == 0) || _37 != nil
|
let _c37 = (Int(_2!) & Int(1 << 19) == 0) || _37 != nil
|
||||||
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 && _c11 && _c12 && _c13 && _c14 && _c15 && _c16 && _c17 && _c18 && _c19 && _c20 && _c21 && _c22 && _c23 && _c24 && _c25 && _c26 && _c27 && _c28 && _c29 && _c30 && _c31 && _c32 && _c33 && _c34 && _c35 && _c36 && _c37 {
|
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 && _c11 && _c12 && _c13 && _c14 && _c15 && _c16 && _c17 && _c18 && _c19 && _c20 && _c21 && _c22 && _c23 && _c24 && _c25 && _c26 && _c27 && _c28 && _c29 && _c30 && _c31 && _c32 && _c33 && _c34 && _c35 && _c36 && _c37 {
|
||||||
return Api.UserFull.userFull(flags: _1!, flags2: _2!, id: _3!, about: _4, settings: _5!, personalPhoto: _6, profilePhoto: _7, fallbackPhoto: _8, notifySettings: _9!, botInfo: _10, pinnedMsgId: _11, commonChatsCount: _12!, folderId: _13, ttlPeriod: _14, themeEmoticon: _15, privateForwardName: _16, botGroupAdminRights: _17, botBroadcastAdminRights: _18, wallpaper: _19, stories: _20, businessWorkHours: _21, businessLocation: _22, businessGreetingMessage: _23, businessAwayMessage: _24, businessIntro: _25, birthday: _26, personalChannelId: _27, personalChannelMessage: _28, stargiftsCount: _29, starrefProgram: _30, botVerification: _31, sendPaidMessagesStars: _32, disallowedGifts: _33, starsRating: _34, starsMyPendingRating: _35, starsMyPendingRatingDate: _36, linkedBotforumChannelId: _37)
|
return Api.UserFull.userFull(flags: _1!, flags2: _2!, id: _3!, about: _4, settings: _5!, personalPhoto: _6, profilePhoto: _7, fallbackPhoto: _8, notifySettings: _9!, botInfo: _10, pinnedMsgId: _11, commonChatsCount: _12!, folderId: _13, ttlPeriod: _14, themeEmoticon: _15, privateForwardName: _16, botGroupAdminRights: _17, botBroadcastAdminRights: _18, wallpaper: _19, stories: _20, businessWorkHours: _21, businessLocation: _22, businessGreetingMessage: _23, businessAwayMessage: _24, businessIntro: _25, birthday: _26, personalChannelId: _27, personalChannelMessage: _28, stargiftsCount: _29, starrefProgram: _30, botVerification: _31, sendPaidMessagesStars: _32, disallowedGifts: _33, starsRating: _34, starsMyPendingRating: _35, starsMyPendingRatingDate: _36, linkedBotforumChannelId: _37)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -764,6 +764,90 @@ public extension Api.payments {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public extension Api.payments {
|
||||||
|
enum UniqueStarGiftValueInfo: TypeConstructorDescription {
|
||||||
|
case uniqueStarGiftValueInfo(flags: Int32, currency: String, value: Int64, initialSaleDate: Int32, initialSaleStars: Int64, initialSalePrice: Int64, lastSaleDate: Int32?, lastSalePrice: Int64?, floorPrice: Int64?, averagePrice: Int64?, listedCount: Int32?, fragmentListedCount: Int32?, fragmentListedUrl: String?)
|
||||||
|
|
||||||
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
|
switch self {
|
||||||
|
case .uniqueStarGiftValueInfo(let flags, let currency, let value, let initialSaleDate, let initialSaleStars, let initialSalePrice, let lastSaleDate, let lastSalePrice, let floorPrice, let averagePrice, let listedCount, let fragmentListedCount, let fragmentListedUrl):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(1362093126)
|
||||||
|
}
|
||||||
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
|
serializeString(currency, buffer: buffer, boxed: false)
|
||||||
|
serializeInt64(value, buffer: buffer, boxed: false)
|
||||||
|
serializeInt32(initialSaleDate, buffer: buffer, boxed: false)
|
||||||
|
serializeInt64(initialSaleStars, buffer: buffer, boxed: false)
|
||||||
|
serializeInt64(initialSalePrice, buffer: buffer, boxed: false)
|
||||||
|
if Int(flags) & Int(1 << 0) != 0 {serializeInt32(lastSaleDate!, buffer: buffer, boxed: false)}
|
||||||
|
if Int(flags) & Int(1 << 0) != 0 {serializeInt64(lastSalePrice!, buffer: buffer, boxed: false)}
|
||||||
|
if Int(flags) & Int(1 << 2) != 0 {serializeInt64(floorPrice!, buffer: buffer, boxed: false)}
|
||||||
|
if Int(flags) & Int(1 << 3) != 0 {serializeInt64(averagePrice!, buffer: buffer, boxed: false)}
|
||||||
|
if Int(flags) & Int(1 << 4) != 0 {serializeInt32(listedCount!, buffer: buffer, boxed: false)}
|
||||||
|
if Int(flags) & Int(1 << 5) != 0 {serializeInt32(fragmentListedCount!, buffer: buffer, boxed: false)}
|
||||||
|
if Int(flags) & Int(1 << 5) != 0 {serializeString(fragmentListedUrl!, buffer: buffer, boxed: false)}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
|
switch self {
|
||||||
|
case .uniqueStarGiftValueInfo(let flags, let currency, let value, let initialSaleDate, let initialSaleStars, let initialSalePrice, let lastSaleDate, let lastSalePrice, let floorPrice, let averagePrice, let listedCount, let fragmentListedCount, let fragmentListedUrl):
|
||||||
|
return ("uniqueStarGiftValueInfo", [("flags", flags as Any), ("currency", currency as Any), ("value", value as Any), ("initialSaleDate", initialSaleDate as Any), ("initialSaleStars", initialSaleStars as Any), ("initialSalePrice", initialSalePrice as Any), ("lastSaleDate", lastSaleDate as Any), ("lastSalePrice", lastSalePrice as Any), ("floorPrice", floorPrice as Any), ("averagePrice", averagePrice as Any), ("listedCount", listedCount as Any), ("fragmentListedCount", fragmentListedCount as Any), ("fragmentListedUrl", fragmentListedUrl as Any)])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func parse_uniqueStarGiftValueInfo(_ reader: BufferReader) -> UniqueStarGiftValueInfo? {
|
||||||
|
var _1: Int32?
|
||||||
|
_1 = reader.readInt32()
|
||||||
|
var _2: String?
|
||||||
|
_2 = parseString(reader)
|
||||||
|
var _3: Int64?
|
||||||
|
_3 = reader.readInt64()
|
||||||
|
var _4: Int32?
|
||||||
|
_4 = reader.readInt32()
|
||||||
|
var _5: Int64?
|
||||||
|
_5 = reader.readInt64()
|
||||||
|
var _6: Int64?
|
||||||
|
_6 = reader.readInt64()
|
||||||
|
var _7: Int32?
|
||||||
|
if Int(_1!) & Int(1 << 0) != 0 {_7 = reader.readInt32() }
|
||||||
|
var _8: Int64?
|
||||||
|
if Int(_1!) & Int(1 << 0) != 0 {_8 = reader.readInt64() }
|
||||||
|
var _9: Int64?
|
||||||
|
if Int(_1!) & Int(1 << 2) != 0 {_9 = reader.readInt64() }
|
||||||
|
var _10: Int64?
|
||||||
|
if Int(_1!) & Int(1 << 3) != 0 {_10 = reader.readInt64() }
|
||||||
|
var _11: Int32?
|
||||||
|
if Int(_1!) & Int(1 << 4) != 0 {_11 = reader.readInt32() }
|
||||||
|
var _12: Int32?
|
||||||
|
if Int(_1!) & Int(1 << 5) != 0 {_12 = reader.readInt32() }
|
||||||
|
var _13: String?
|
||||||
|
if Int(_1!) & Int(1 << 5) != 0 {_13 = parseString(reader) }
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = _3 != nil
|
||||||
|
let _c4 = _4 != nil
|
||||||
|
let _c5 = _5 != nil
|
||||||
|
let _c6 = _6 != nil
|
||||||
|
let _c7 = (Int(_1!) & Int(1 << 0) == 0) || _7 != nil
|
||||||
|
let _c8 = (Int(_1!) & Int(1 << 0) == 0) || _8 != nil
|
||||||
|
let _c9 = (Int(_1!) & Int(1 << 2) == 0) || _9 != nil
|
||||||
|
let _c10 = (Int(_1!) & Int(1 << 3) == 0) || _10 != nil
|
||||||
|
let _c11 = (Int(_1!) & Int(1 << 4) == 0) || _11 != nil
|
||||||
|
let _c12 = (Int(_1!) & Int(1 << 5) == 0) || _12 != nil
|
||||||
|
let _c13 = (Int(_1!) & Int(1 << 5) == 0) || _13 != nil
|
||||||
|
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 && _c11 && _c12 && _c13 {
|
||||||
|
return Api.payments.UniqueStarGiftValueInfo.uniqueStarGiftValueInfo(flags: _1!, currency: _2!, value: _3!, initialSaleDate: _4!, initialSaleStars: _5!, initialSalePrice: _6!, lastSaleDate: _7, lastSalePrice: _8, floorPrice: _9, averagePrice: _10, listedCount: _11, fragmentListedCount: _12, fragmentListedUrl: _13)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
public extension Api.payments {
|
public extension Api.payments {
|
||||||
enum ValidatedRequestedInfo: TypeConstructorDescription {
|
enum ValidatedRequestedInfo: TypeConstructorDescription {
|
||||||
case validatedRequestedInfo(flags: Int32, id: String?, shippingOptions: [Api.ShippingOption]?)
|
case validatedRequestedInfo(flags: Int32, id: String?, shippingOptions: [Api.ShippingOption]?)
|
||||||
@ -1644,171 +1728,3 @@ public extension Api.smsjobs {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public extension Api.stats {
|
|
||||||
enum BroadcastStats: TypeConstructorDescription {
|
|
||||||
case broadcastStats(period: Api.StatsDateRangeDays, followers: Api.StatsAbsValueAndPrev, viewsPerPost: Api.StatsAbsValueAndPrev, sharesPerPost: Api.StatsAbsValueAndPrev, reactionsPerPost: Api.StatsAbsValueAndPrev, viewsPerStory: Api.StatsAbsValueAndPrev, sharesPerStory: Api.StatsAbsValueAndPrev, reactionsPerStory: Api.StatsAbsValueAndPrev, enabledNotifications: Api.StatsPercentValue, growthGraph: Api.StatsGraph, followersGraph: Api.StatsGraph, muteGraph: Api.StatsGraph, topHoursGraph: Api.StatsGraph, interactionsGraph: Api.StatsGraph, ivInteractionsGraph: Api.StatsGraph, viewsBySourceGraph: Api.StatsGraph, newFollowersBySourceGraph: Api.StatsGraph, languagesGraph: Api.StatsGraph, reactionsByEmotionGraph: Api.StatsGraph, storyInteractionsGraph: Api.StatsGraph, storyReactionsByEmotionGraph: Api.StatsGraph, recentPostsInteractions: [Api.PostInteractionCounters])
|
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
||||||
switch self {
|
|
||||||
case .broadcastStats(let period, let followers, let viewsPerPost, let sharesPerPost, let reactionsPerPost, let viewsPerStory, let sharesPerStory, let reactionsPerStory, let enabledNotifications, let growthGraph, let followersGraph, let muteGraph, let topHoursGraph, let interactionsGraph, let ivInteractionsGraph, let viewsBySourceGraph, let newFollowersBySourceGraph, let languagesGraph, let reactionsByEmotionGraph, let storyInteractionsGraph, let storyReactionsByEmotionGraph, let recentPostsInteractions):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(963421692)
|
|
||||||
}
|
|
||||||
period.serialize(buffer, true)
|
|
||||||
followers.serialize(buffer, true)
|
|
||||||
viewsPerPost.serialize(buffer, true)
|
|
||||||
sharesPerPost.serialize(buffer, true)
|
|
||||||
reactionsPerPost.serialize(buffer, true)
|
|
||||||
viewsPerStory.serialize(buffer, true)
|
|
||||||
sharesPerStory.serialize(buffer, true)
|
|
||||||
reactionsPerStory.serialize(buffer, true)
|
|
||||||
enabledNotifications.serialize(buffer, true)
|
|
||||||
growthGraph.serialize(buffer, true)
|
|
||||||
followersGraph.serialize(buffer, true)
|
|
||||||
muteGraph.serialize(buffer, true)
|
|
||||||
topHoursGraph.serialize(buffer, true)
|
|
||||||
interactionsGraph.serialize(buffer, true)
|
|
||||||
ivInteractionsGraph.serialize(buffer, true)
|
|
||||||
viewsBySourceGraph.serialize(buffer, true)
|
|
||||||
newFollowersBySourceGraph.serialize(buffer, true)
|
|
||||||
languagesGraph.serialize(buffer, true)
|
|
||||||
reactionsByEmotionGraph.serialize(buffer, true)
|
|
||||||
storyInteractionsGraph.serialize(buffer, true)
|
|
||||||
storyReactionsByEmotionGraph.serialize(buffer, true)
|
|
||||||
buffer.appendInt32(481674261)
|
|
||||||
buffer.appendInt32(Int32(recentPostsInteractions.count))
|
|
||||||
for item in recentPostsInteractions {
|
|
||||||
item.serialize(buffer, true)
|
|
||||||
}
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public func descriptionFields() -> (String, [(String, Any)]) {
|
|
||||||
switch self {
|
|
||||||
case .broadcastStats(let period, let followers, let viewsPerPost, let sharesPerPost, let reactionsPerPost, let viewsPerStory, let sharesPerStory, let reactionsPerStory, let enabledNotifications, let growthGraph, let followersGraph, let muteGraph, let topHoursGraph, let interactionsGraph, let ivInteractionsGraph, let viewsBySourceGraph, let newFollowersBySourceGraph, let languagesGraph, let reactionsByEmotionGraph, let storyInteractionsGraph, let storyReactionsByEmotionGraph, let recentPostsInteractions):
|
|
||||||
return ("broadcastStats", [("period", period as Any), ("followers", followers as Any), ("viewsPerPost", viewsPerPost as Any), ("sharesPerPost", sharesPerPost as Any), ("reactionsPerPost", reactionsPerPost as Any), ("viewsPerStory", viewsPerStory as Any), ("sharesPerStory", sharesPerStory as Any), ("reactionsPerStory", reactionsPerStory as Any), ("enabledNotifications", enabledNotifications as Any), ("growthGraph", growthGraph as Any), ("followersGraph", followersGraph as Any), ("muteGraph", muteGraph as Any), ("topHoursGraph", topHoursGraph as Any), ("interactionsGraph", interactionsGraph as Any), ("ivInteractionsGraph", ivInteractionsGraph as Any), ("viewsBySourceGraph", viewsBySourceGraph as Any), ("newFollowersBySourceGraph", newFollowersBySourceGraph as Any), ("languagesGraph", languagesGraph as Any), ("reactionsByEmotionGraph", reactionsByEmotionGraph as Any), ("storyInteractionsGraph", storyInteractionsGraph as Any), ("storyReactionsByEmotionGraph", storyReactionsByEmotionGraph as Any), ("recentPostsInteractions", recentPostsInteractions as Any)])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static func parse_broadcastStats(_ reader: BufferReader) -> BroadcastStats? {
|
|
||||||
var _1: Api.StatsDateRangeDays?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_1 = Api.parse(reader, signature: signature) as? Api.StatsDateRangeDays
|
|
||||||
}
|
|
||||||
var _2: Api.StatsAbsValueAndPrev?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_2 = Api.parse(reader, signature: signature) as? Api.StatsAbsValueAndPrev
|
|
||||||
}
|
|
||||||
var _3: Api.StatsAbsValueAndPrev?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_3 = Api.parse(reader, signature: signature) as? Api.StatsAbsValueAndPrev
|
|
||||||
}
|
|
||||||
var _4: Api.StatsAbsValueAndPrev?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_4 = Api.parse(reader, signature: signature) as? Api.StatsAbsValueAndPrev
|
|
||||||
}
|
|
||||||
var _5: Api.StatsAbsValueAndPrev?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_5 = Api.parse(reader, signature: signature) as? Api.StatsAbsValueAndPrev
|
|
||||||
}
|
|
||||||
var _6: Api.StatsAbsValueAndPrev?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_6 = Api.parse(reader, signature: signature) as? Api.StatsAbsValueAndPrev
|
|
||||||
}
|
|
||||||
var _7: Api.StatsAbsValueAndPrev?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_7 = Api.parse(reader, signature: signature) as? Api.StatsAbsValueAndPrev
|
|
||||||
}
|
|
||||||
var _8: Api.StatsAbsValueAndPrev?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_8 = Api.parse(reader, signature: signature) as? Api.StatsAbsValueAndPrev
|
|
||||||
}
|
|
||||||
var _9: Api.StatsPercentValue?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_9 = Api.parse(reader, signature: signature) as? Api.StatsPercentValue
|
|
||||||
}
|
|
||||||
var _10: Api.StatsGraph?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_10 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
|
||||||
}
|
|
||||||
var _11: Api.StatsGraph?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_11 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
|
||||||
}
|
|
||||||
var _12: Api.StatsGraph?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_12 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
|
||||||
}
|
|
||||||
var _13: Api.StatsGraph?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_13 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
|
||||||
}
|
|
||||||
var _14: Api.StatsGraph?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_14 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
|
||||||
}
|
|
||||||
var _15: Api.StatsGraph?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_15 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
|
||||||
}
|
|
||||||
var _16: Api.StatsGraph?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_16 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
|
||||||
}
|
|
||||||
var _17: Api.StatsGraph?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_17 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
|
||||||
}
|
|
||||||
var _18: Api.StatsGraph?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_18 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
|
||||||
}
|
|
||||||
var _19: Api.StatsGraph?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_19 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
|
||||||
}
|
|
||||||
var _20: Api.StatsGraph?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_20 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
|
||||||
}
|
|
||||||
var _21: Api.StatsGraph?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_21 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
|
||||||
}
|
|
||||||
var _22: [Api.PostInteractionCounters]?
|
|
||||||
if let _ = reader.readInt32() {
|
|
||||||
_22 = Api.parseVector(reader, elementSignature: 0, elementType: Api.PostInteractionCounters.self)
|
|
||||||
}
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = _2 != nil
|
|
||||||
let _c3 = _3 != nil
|
|
||||||
let _c4 = _4 != nil
|
|
||||||
let _c5 = _5 != nil
|
|
||||||
let _c6 = _6 != nil
|
|
||||||
let _c7 = _7 != nil
|
|
||||||
let _c8 = _8 != nil
|
|
||||||
let _c9 = _9 != nil
|
|
||||||
let _c10 = _10 != nil
|
|
||||||
let _c11 = _11 != nil
|
|
||||||
let _c12 = _12 != nil
|
|
||||||
let _c13 = _13 != nil
|
|
||||||
let _c14 = _14 != nil
|
|
||||||
let _c15 = _15 != nil
|
|
||||||
let _c16 = _16 != nil
|
|
||||||
let _c17 = _17 != nil
|
|
||||||
let _c18 = _18 != nil
|
|
||||||
let _c19 = _19 != nil
|
|
||||||
let _c20 = _20 != nil
|
|
||||||
let _c21 = _21 != nil
|
|
||||||
let _c22 = _22 != nil
|
|
||||||
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 && _c11 && _c12 && _c13 && _c14 && _c15 && _c16 && _c17 && _c18 && _c19 && _c20 && _c21 && _c22 {
|
|
||||||
return Api.stats.BroadcastStats.broadcastStats(period: _1!, followers: _2!, viewsPerPost: _3!, sharesPerPost: _4!, reactionsPerPost: _5!, viewsPerStory: _6!, sharesPerStory: _7!, reactionsPerStory: _8!, enabledNotifications: _9!, growthGraph: _10!, followersGraph: _11!, muteGraph: _12!, topHoursGraph: _13!, interactionsGraph: _14!, ivInteractionsGraph: _15!, viewsBySourceGraph: _16!, newFollowersBySourceGraph: _17!, languagesGraph: _18!, reactionsByEmotionGraph: _19!, storyInteractionsGraph: _20!, storyReactionsByEmotionGraph: _21!, recentPostsInteractions: _22!)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@ -1,3 +1,171 @@
|
|||||||
|
public extension Api.stats {
|
||||||
|
enum BroadcastStats: TypeConstructorDescription {
|
||||||
|
case broadcastStats(period: Api.StatsDateRangeDays, followers: Api.StatsAbsValueAndPrev, viewsPerPost: Api.StatsAbsValueAndPrev, sharesPerPost: Api.StatsAbsValueAndPrev, reactionsPerPost: Api.StatsAbsValueAndPrev, viewsPerStory: Api.StatsAbsValueAndPrev, sharesPerStory: Api.StatsAbsValueAndPrev, reactionsPerStory: Api.StatsAbsValueAndPrev, enabledNotifications: Api.StatsPercentValue, growthGraph: Api.StatsGraph, followersGraph: Api.StatsGraph, muteGraph: Api.StatsGraph, topHoursGraph: Api.StatsGraph, interactionsGraph: Api.StatsGraph, ivInteractionsGraph: Api.StatsGraph, viewsBySourceGraph: Api.StatsGraph, newFollowersBySourceGraph: Api.StatsGraph, languagesGraph: Api.StatsGraph, reactionsByEmotionGraph: Api.StatsGraph, storyInteractionsGraph: Api.StatsGraph, storyReactionsByEmotionGraph: Api.StatsGraph, recentPostsInteractions: [Api.PostInteractionCounters])
|
||||||
|
|
||||||
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
|
switch self {
|
||||||
|
case .broadcastStats(let period, let followers, let viewsPerPost, let sharesPerPost, let reactionsPerPost, let viewsPerStory, let sharesPerStory, let reactionsPerStory, let enabledNotifications, let growthGraph, let followersGraph, let muteGraph, let topHoursGraph, let interactionsGraph, let ivInteractionsGraph, let viewsBySourceGraph, let newFollowersBySourceGraph, let languagesGraph, let reactionsByEmotionGraph, let storyInteractionsGraph, let storyReactionsByEmotionGraph, let recentPostsInteractions):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(963421692)
|
||||||
|
}
|
||||||
|
period.serialize(buffer, true)
|
||||||
|
followers.serialize(buffer, true)
|
||||||
|
viewsPerPost.serialize(buffer, true)
|
||||||
|
sharesPerPost.serialize(buffer, true)
|
||||||
|
reactionsPerPost.serialize(buffer, true)
|
||||||
|
viewsPerStory.serialize(buffer, true)
|
||||||
|
sharesPerStory.serialize(buffer, true)
|
||||||
|
reactionsPerStory.serialize(buffer, true)
|
||||||
|
enabledNotifications.serialize(buffer, true)
|
||||||
|
growthGraph.serialize(buffer, true)
|
||||||
|
followersGraph.serialize(buffer, true)
|
||||||
|
muteGraph.serialize(buffer, true)
|
||||||
|
topHoursGraph.serialize(buffer, true)
|
||||||
|
interactionsGraph.serialize(buffer, true)
|
||||||
|
ivInteractionsGraph.serialize(buffer, true)
|
||||||
|
viewsBySourceGraph.serialize(buffer, true)
|
||||||
|
newFollowersBySourceGraph.serialize(buffer, true)
|
||||||
|
languagesGraph.serialize(buffer, true)
|
||||||
|
reactionsByEmotionGraph.serialize(buffer, true)
|
||||||
|
storyInteractionsGraph.serialize(buffer, true)
|
||||||
|
storyReactionsByEmotionGraph.serialize(buffer, true)
|
||||||
|
buffer.appendInt32(481674261)
|
||||||
|
buffer.appendInt32(Int32(recentPostsInteractions.count))
|
||||||
|
for item in recentPostsInteractions {
|
||||||
|
item.serialize(buffer, true)
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
|
switch self {
|
||||||
|
case .broadcastStats(let period, let followers, let viewsPerPost, let sharesPerPost, let reactionsPerPost, let viewsPerStory, let sharesPerStory, let reactionsPerStory, let enabledNotifications, let growthGraph, let followersGraph, let muteGraph, let topHoursGraph, let interactionsGraph, let ivInteractionsGraph, let viewsBySourceGraph, let newFollowersBySourceGraph, let languagesGraph, let reactionsByEmotionGraph, let storyInteractionsGraph, let storyReactionsByEmotionGraph, let recentPostsInteractions):
|
||||||
|
return ("broadcastStats", [("period", period as Any), ("followers", followers as Any), ("viewsPerPost", viewsPerPost as Any), ("sharesPerPost", sharesPerPost as Any), ("reactionsPerPost", reactionsPerPost as Any), ("viewsPerStory", viewsPerStory as Any), ("sharesPerStory", sharesPerStory as Any), ("reactionsPerStory", reactionsPerStory as Any), ("enabledNotifications", enabledNotifications as Any), ("growthGraph", growthGraph as Any), ("followersGraph", followersGraph as Any), ("muteGraph", muteGraph as Any), ("topHoursGraph", topHoursGraph as Any), ("interactionsGraph", interactionsGraph as Any), ("ivInteractionsGraph", ivInteractionsGraph as Any), ("viewsBySourceGraph", viewsBySourceGraph as Any), ("newFollowersBySourceGraph", newFollowersBySourceGraph as Any), ("languagesGraph", languagesGraph as Any), ("reactionsByEmotionGraph", reactionsByEmotionGraph as Any), ("storyInteractionsGraph", storyInteractionsGraph as Any), ("storyReactionsByEmotionGraph", storyReactionsByEmotionGraph as Any), ("recentPostsInteractions", recentPostsInteractions as Any)])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func parse_broadcastStats(_ reader: BufferReader) -> BroadcastStats? {
|
||||||
|
var _1: Api.StatsDateRangeDays?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_1 = Api.parse(reader, signature: signature) as? Api.StatsDateRangeDays
|
||||||
|
}
|
||||||
|
var _2: Api.StatsAbsValueAndPrev?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_2 = Api.parse(reader, signature: signature) as? Api.StatsAbsValueAndPrev
|
||||||
|
}
|
||||||
|
var _3: Api.StatsAbsValueAndPrev?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_3 = Api.parse(reader, signature: signature) as? Api.StatsAbsValueAndPrev
|
||||||
|
}
|
||||||
|
var _4: Api.StatsAbsValueAndPrev?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_4 = Api.parse(reader, signature: signature) as? Api.StatsAbsValueAndPrev
|
||||||
|
}
|
||||||
|
var _5: Api.StatsAbsValueAndPrev?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_5 = Api.parse(reader, signature: signature) as? Api.StatsAbsValueAndPrev
|
||||||
|
}
|
||||||
|
var _6: Api.StatsAbsValueAndPrev?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_6 = Api.parse(reader, signature: signature) as? Api.StatsAbsValueAndPrev
|
||||||
|
}
|
||||||
|
var _7: Api.StatsAbsValueAndPrev?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_7 = Api.parse(reader, signature: signature) as? Api.StatsAbsValueAndPrev
|
||||||
|
}
|
||||||
|
var _8: Api.StatsAbsValueAndPrev?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_8 = Api.parse(reader, signature: signature) as? Api.StatsAbsValueAndPrev
|
||||||
|
}
|
||||||
|
var _9: Api.StatsPercentValue?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_9 = Api.parse(reader, signature: signature) as? Api.StatsPercentValue
|
||||||
|
}
|
||||||
|
var _10: Api.StatsGraph?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_10 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
||||||
|
}
|
||||||
|
var _11: Api.StatsGraph?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_11 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
||||||
|
}
|
||||||
|
var _12: Api.StatsGraph?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_12 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
||||||
|
}
|
||||||
|
var _13: Api.StatsGraph?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_13 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
||||||
|
}
|
||||||
|
var _14: Api.StatsGraph?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_14 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
||||||
|
}
|
||||||
|
var _15: Api.StatsGraph?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_15 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
||||||
|
}
|
||||||
|
var _16: Api.StatsGraph?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_16 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
||||||
|
}
|
||||||
|
var _17: Api.StatsGraph?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_17 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
||||||
|
}
|
||||||
|
var _18: Api.StatsGraph?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_18 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
||||||
|
}
|
||||||
|
var _19: Api.StatsGraph?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_19 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
||||||
|
}
|
||||||
|
var _20: Api.StatsGraph?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_20 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
||||||
|
}
|
||||||
|
var _21: Api.StatsGraph?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_21 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
||||||
|
}
|
||||||
|
var _22: [Api.PostInteractionCounters]?
|
||||||
|
if let _ = reader.readInt32() {
|
||||||
|
_22 = Api.parseVector(reader, elementSignature: 0, elementType: Api.PostInteractionCounters.self)
|
||||||
|
}
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = _3 != nil
|
||||||
|
let _c4 = _4 != nil
|
||||||
|
let _c5 = _5 != nil
|
||||||
|
let _c6 = _6 != nil
|
||||||
|
let _c7 = _7 != nil
|
||||||
|
let _c8 = _8 != nil
|
||||||
|
let _c9 = _9 != nil
|
||||||
|
let _c10 = _10 != nil
|
||||||
|
let _c11 = _11 != nil
|
||||||
|
let _c12 = _12 != nil
|
||||||
|
let _c13 = _13 != nil
|
||||||
|
let _c14 = _14 != nil
|
||||||
|
let _c15 = _15 != nil
|
||||||
|
let _c16 = _16 != nil
|
||||||
|
let _c17 = _17 != nil
|
||||||
|
let _c18 = _18 != nil
|
||||||
|
let _c19 = _19 != nil
|
||||||
|
let _c20 = _20 != nil
|
||||||
|
let _c21 = _21 != nil
|
||||||
|
let _c22 = _22 != nil
|
||||||
|
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 && _c11 && _c12 && _c13 && _c14 && _c15 && _c16 && _c17 && _c18 && _c19 && _c20 && _c21 && _c22 {
|
||||||
|
return Api.stats.BroadcastStats.broadcastStats(period: _1!, followers: _2!, viewsPerPost: _3!, sharesPerPost: _4!, reactionsPerPost: _5!, viewsPerStory: _6!, sharesPerStory: _7!, reactionsPerStory: _8!, enabledNotifications: _9!, growthGraph: _10!, followersGraph: _11!, muteGraph: _12!, topHoursGraph: _13!, interactionsGraph: _14!, ivInteractionsGraph: _15!, viewsBySourceGraph: _16!, newFollowersBySourceGraph: _17!, languagesGraph: _18!, reactionsByEmotionGraph: _19!, storyInteractionsGraph: _20!, storyReactionsByEmotionGraph: _21!, recentPostsInteractions: _22!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
public extension Api.stats {
|
public extension Api.stats {
|
||||||
enum MegagroupStats: TypeConstructorDescription {
|
enum MegagroupStats: TypeConstructorDescription {
|
||||||
case megagroupStats(period: Api.StatsDateRangeDays, members: Api.StatsAbsValueAndPrev, messages: Api.StatsAbsValueAndPrev, viewers: Api.StatsAbsValueAndPrev, posters: Api.StatsAbsValueAndPrev, growthGraph: Api.StatsGraph, membersGraph: Api.StatsGraph, newMembersBySourceGraph: Api.StatsGraph, languagesGraph: Api.StatsGraph, messagesGraph: Api.StatsGraph, actionsGraph: Api.StatsGraph, topHoursGraph: Api.StatsGraph, weekdaysGraph: Api.StatsGraph, topPosters: [Api.StatsGroupTopPoster], topAdmins: [Api.StatsGroupTopAdmin], topInviters: [Api.StatsGroupTopInviter], users: [Api.User])
|
case megagroupStats(period: Api.StatsDateRangeDays, members: Api.StatsAbsValueAndPrev, messages: Api.StatsAbsValueAndPrev, viewers: Api.StatsAbsValueAndPrev, posters: Api.StatsAbsValueAndPrev, growthGraph: Api.StatsGraph, membersGraph: Api.StatsGraph, newMembersBySourceGraph: Api.StatsGraph, languagesGraph: Api.StatsGraph, messagesGraph: Api.StatsGraph, actionsGraph: Api.StatsGraph, topHoursGraph: Api.StatsGraph, weekdaysGraph: Api.StatsGraph, topPosters: [Api.StatsGroupTopPoster], topAdmins: [Api.StatsGroupTopAdmin], topInviters: [Api.StatsGroupTopInviter], users: [Api.User])
|
||||||
|
|||||||
@ -9900,6 +9900,21 @@ public extension Api.functions.payments {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public extension Api.functions.payments {
|
||||||
|
static func getUniqueStarGiftValueInfo(slug: String) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.payments.UniqueStarGiftValueInfo>) {
|
||||||
|
let buffer = Buffer()
|
||||||
|
buffer.appendInt32(1130737515)
|
||||||
|
serializeString(slug, buffer: buffer, boxed: false)
|
||||||
|
return (FunctionDescription(name: "payments.getUniqueStarGiftValueInfo", parameters: [("slug", String(describing: slug))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.payments.UniqueStarGiftValueInfo? in
|
||||||
|
let reader = BufferReader(buffer)
|
||||||
|
var result: Api.payments.UniqueStarGiftValueInfo?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
result = Api.parse(reader, signature: signature) as? Api.payments.UniqueStarGiftValueInfo
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
public extension Api.functions.payments {
|
public extension Api.functions.payments {
|
||||||
static func launchPrepaidGiveaway(peer: Api.InputPeer, giveawayId: Int64, purpose: Api.InputStorePaymentPurpose) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Updates>) {
|
static func launchPrepaidGiveaway(peer: Api.InputPeer, giveawayId: Int64, purpose: Api.InputStorePaymentPurpose) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Updates>) {
|
||||||
let buffer = Buffer()
|
let buffer = Buffer()
|
||||||
|
|||||||
@ -177,7 +177,7 @@ func telegramMediaActionFromApiAction(_ action: Api.MessageAction) -> TelegramMe
|
|||||||
return TelegramMediaAction(action: .paymentRefunded(peerId: peer.peerId, currency: currency, totalAmount: totalAmount, payload: payload?.makeData(), transactionId: transactionId))
|
return TelegramMediaAction(action: .paymentRefunded(peerId: peer.peerId, currency: currency, totalAmount: totalAmount, payload: payload?.makeData(), transactionId: transactionId))
|
||||||
case let .messageActionPrizeStars(flags, stars, transactionId, boostPeer, giveawayMsgId):
|
case let .messageActionPrizeStars(flags, stars, transactionId, boostPeer, giveawayMsgId):
|
||||||
return TelegramMediaAction(action: .prizeStars(amount: stars, isUnclaimed: (flags & (1 << 2)) != 0, boostPeerId: boostPeer.peerId, transactionId: transactionId, giveawayMessageId: MessageId(peerId: boostPeer.peerId, namespace: Namespaces.Message.Cloud, id: giveawayMsgId)))
|
return TelegramMediaAction(action: .prizeStars(amount: stars, isUnclaimed: (flags & (1 << 2)) != 0, boostPeerId: boostPeer.peerId, transactionId: transactionId, giveawayMessageId: MessageId(peerId: boostPeer.peerId, namespace: Namespaces.Message.Cloud, id: giveawayMsgId)))
|
||||||
case let .messageActionStarGift(flags, apiGift, message, convertStars, upgradeMessageId, upgradeStars, fromId, peer, savedId):
|
case let .messageActionStarGift(flags, apiGift, message, convertStars, upgradeMessageId, upgradeStars, fromId, peer, savedId, _):
|
||||||
let text: String?
|
let text: String?
|
||||||
let entities: [MessageTextEntity]?
|
let entities: [MessageTextEntity]?
|
||||||
switch message {
|
switch message {
|
||||||
|
|||||||
@ -118,6 +118,9 @@ extension TelegramUser {
|
|||||||
if (flags2 & (1 << 13)) != 0 {
|
if (flags2 & (1 << 13)) != 0 {
|
||||||
botFlags.insert(.hasWebApp)
|
botFlags.insert(.hasWebApp)
|
||||||
}
|
}
|
||||||
|
if (flags2 & (1 << 16)) != 0 {
|
||||||
|
botFlags.insert(.hasForum)
|
||||||
|
}
|
||||||
botInfo = BotUserInfo(flags: botFlags, inlinePlaceholder: botInlinePlaceholder)
|
botInfo = BotUserInfo(flags: botFlags, inlinePlaceholder: botInlinePlaceholder)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1537,7 +1537,7 @@ public final class AccountViewTracker {
|
|||||||
let peerId = slice[i].0
|
let peerId = slice[i].0
|
||||||
let value = result[i]
|
let value = result[i]
|
||||||
transaction.updatePeerCachedData(peerIds: Set([peerId]), update: { _, cachedData in
|
transaction.updatePeerCachedData(peerIds: Set([peerId]), update: { _, cachedData in
|
||||||
var cachedData = cachedData as? CachedUserData ?? CachedUserData(about: nil, botInfo: nil, editableBotInfo: nil, peerStatusSettings: nil, pinnedMessageId: nil, isBlocked: false, commonGroupCount: 0, voiceCallsAvailable: true, videoCallsAvailable: true, callsPrivate: true, canPinMessages: true, hasScheduledMessages: true, autoremoveTimeout: .unknown, themeEmoticon: nil, photo: .unknown, personalPhoto: .unknown, fallbackPhoto: .unknown, voiceMessagesAvailable: true, wallpaper: nil, flags: [], businessHours: nil, businessLocation: nil, greetingMessage: nil, awayMessage: nil, connectedBot: nil, businessIntro: .unknown, birthday: nil, personalChannel: .unknown, botPreview: nil, starGiftsCount: nil, starRefProgram: nil, verification: nil, sendPaidMessageStars: nil, disallowedGifts: [], botGroupAdminRights: nil, botChannelAdminRights: nil, starRating: nil, pendingStarRating: nil, linkedBotChannelId: nil)
|
var cachedData = cachedData as? CachedUserData ?? CachedUserData(about: nil, botInfo: nil, editableBotInfo: nil, peerStatusSettings: nil, pinnedMessageId: nil, isBlocked: false, commonGroupCount: 0, voiceCallsAvailable: true, videoCallsAvailable: true, callsPrivate: true, canPinMessages: true, hasScheduledMessages: true, autoremoveTimeout: .unknown, themeEmoticon: nil, photo: .unknown, personalPhoto: .unknown, fallbackPhoto: .unknown, voiceMessagesAvailable: true, wallpaper: nil, flags: [], businessHours: nil, businessLocation: nil, greetingMessage: nil, awayMessage: nil, connectedBot: nil, businessIntro: .unknown, birthday: nil, personalChannel: .unknown, botPreview: nil, starGiftsCount: nil, starRefProgram: nil, verification: nil, sendPaidMessageStars: nil, disallowedGifts: [], botGroupAdminRights: nil, botChannelAdminRights: nil, starRating: nil, pendingStarRating: nil, linkedBotChannelId: .unknown)
|
||||||
var flags = cachedData.flags
|
var flags = cachedData.flags
|
||||||
var sendPaidMessageStars = cachedData.sendPaidMessageStars
|
var sendPaidMessageStars = cachedData.sendPaidMessageStars
|
||||||
switch value {
|
switch value {
|
||||||
|
|||||||
@ -1031,6 +1031,11 @@ public final class CachedUserData: CachedPeerData {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum LinkedBotChannelId: Equatable {
|
||||||
|
case unknown
|
||||||
|
case known(PeerId?)
|
||||||
|
}
|
||||||
|
|
||||||
public let about: String?
|
public let about: String?
|
||||||
public let botInfo: BotInfo?
|
public let botInfo: BotInfo?
|
||||||
public let editableBotInfo: EditableBotInfo?
|
public let editableBotInfo: EditableBotInfo?
|
||||||
@ -1069,7 +1074,7 @@ public final class CachedUserData: CachedPeerData {
|
|||||||
public let botChannelAdminRights: TelegramChatAdminRights?
|
public let botChannelAdminRights: TelegramChatAdminRights?
|
||||||
public let starRating: TelegramStarRating?
|
public let starRating: TelegramStarRating?
|
||||||
public let pendingStarRating: TelegramStarPendingRating?
|
public let pendingStarRating: TelegramStarPendingRating?
|
||||||
public let linkedBotChannelId: PeerId?
|
public let linkedBotChannelId: LinkedBotChannelId
|
||||||
|
|
||||||
public let peerIds: Set<PeerId>
|
public let peerIds: Set<PeerId>
|
||||||
public let messageIds: Set<MessageId>
|
public let messageIds: Set<MessageId>
|
||||||
@ -1116,10 +1121,10 @@ public final class CachedUserData: CachedPeerData {
|
|||||||
self.botChannelAdminRights = nil
|
self.botChannelAdminRights = nil
|
||||||
self.starRating = nil
|
self.starRating = nil
|
||||||
self.pendingStarRating = nil
|
self.pendingStarRating = nil
|
||||||
self.linkedBotChannelId = nil
|
self.linkedBotChannelId = .unknown
|
||||||
}
|
}
|
||||||
|
|
||||||
public init(about: String?, botInfo: BotInfo?, editableBotInfo: EditableBotInfo?, peerStatusSettings: PeerStatusSettings?, pinnedMessageId: MessageId?, isBlocked: Bool, commonGroupCount: Int32, voiceCallsAvailable: Bool, videoCallsAvailable: Bool, callsPrivate: Bool, canPinMessages: Bool, hasScheduledMessages: Bool, autoremoveTimeout: CachedPeerAutoremoveTimeout, themeEmoticon: String?, photo: CachedPeerProfilePhoto, personalPhoto: CachedPeerProfilePhoto, fallbackPhoto: CachedPeerProfilePhoto, voiceMessagesAvailable: Bool, wallpaper: TelegramWallpaper?, flags: CachedUserFlags, businessHours: TelegramBusinessHours?, businessLocation: TelegramBusinessLocation?, greetingMessage: TelegramBusinessGreetingMessage?, awayMessage: TelegramBusinessAwayMessage?, connectedBot: TelegramAccountConnectedBot?, businessIntro: CachedTelegramBusinessIntro, birthday: TelegramBirthday?, personalChannel: CachedTelegramPersonalChannel, botPreview: BotPreview?, starGiftsCount: Int32?, starRefProgram: TelegramStarRefProgram?, verification: PeerVerification?, sendPaidMessageStars: StarsAmount?, disallowedGifts: TelegramDisallowedGifts?, botGroupAdminRights: TelegramChatAdminRights?, botChannelAdminRights: TelegramChatAdminRights?, starRating: TelegramStarRating?, pendingStarRating: TelegramStarPendingRating?, linkedBotChannelId: PeerId?) {
|
public init(about: String?, botInfo: BotInfo?, editableBotInfo: EditableBotInfo?, peerStatusSettings: PeerStatusSettings?, pinnedMessageId: MessageId?, isBlocked: Bool, commonGroupCount: Int32, voiceCallsAvailable: Bool, videoCallsAvailable: Bool, callsPrivate: Bool, canPinMessages: Bool, hasScheduledMessages: Bool, autoremoveTimeout: CachedPeerAutoremoveTimeout, themeEmoticon: String?, photo: CachedPeerProfilePhoto, personalPhoto: CachedPeerProfilePhoto, fallbackPhoto: CachedPeerProfilePhoto, voiceMessagesAvailable: Bool, wallpaper: TelegramWallpaper?, flags: CachedUserFlags, businessHours: TelegramBusinessHours?, businessLocation: TelegramBusinessLocation?, greetingMessage: TelegramBusinessGreetingMessage?, awayMessage: TelegramBusinessAwayMessage?, connectedBot: TelegramAccountConnectedBot?, businessIntro: CachedTelegramBusinessIntro, birthday: TelegramBirthday?, personalChannel: CachedTelegramPersonalChannel, botPreview: BotPreview?, starGiftsCount: Int32?, starRefProgram: TelegramStarRefProgram?, verification: PeerVerification?, sendPaidMessageStars: StarsAmount?, disallowedGifts: TelegramDisallowedGifts?, botGroupAdminRights: TelegramChatAdminRights?, botChannelAdminRights: TelegramChatAdminRights?, starRating: TelegramStarRating?, pendingStarRating: TelegramStarPendingRating?, linkedBotChannelId: LinkedBotChannelId) {
|
||||||
self.about = about
|
self.about = about
|
||||||
self.botInfo = botInfo
|
self.botInfo = botInfo
|
||||||
self.editableBotInfo = editableBotInfo
|
self.editableBotInfo = editableBotInfo
|
||||||
@ -1240,7 +1245,15 @@ public final class CachedUserData: CachedPeerData {
|
|||||||
self.starRating = decoder.decodeCodable(TelegramStarRating.self, forKey: "starRating")
|
self.starRating = decoder.decodeCodable(TelegramStarRating.self, forKey: "starRating")
|
||||||
self.pendingStarRating = decoder.decodeCodable(TelegramStarPendingRating.self, forKey: "pendingStarRating")
|
self.pendingStarRating = decoder.decodeCodable(TelegramStarPendingRating.self, forKey: "pendingStarRating")
|
||||||
|
|
||||||
self.linkedBotChannelId = decoder.decodeOptionalInt64ForKey("linkedBotChannelId").flatMap(PeerId.init)
|
if let linkedBotChannelId = decoder.decodeOptionalInt64ForKey("linkedBotChannelId") {
|
||||||
|
if linkedBotChannelId == 0 {
|
||||||
|
self.linkedBotChannelId = .known(nil)
|
||||||
|
} else {
|
||||||
|
self.linkedBotChannelId = .known(PeerId(linkedBotChannelId))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
self.linkedBotChannelId = .unknown
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public func encode(_ encoder: PostboxEncoder) {
|
public func encode(_ encoder: PostboxEncoder) {
|
||||||
@ -1400,10 +1413,15 @@ public final class CachedUserData: CachedPeerData {
|
|||||||
encoder.encodeNil(forKey: "pendingStarRating")
|
encoder.encodeNil(forKey: "pendingStarRating")
|
||||||
}
|
}
|
||||||
|
|
||||||
if let linkedBotChannelId = self.linkedBotChannelId {
|
switch self.linkedBotChannelId {
|
||||||
encoder.encodeInt64(linkedBotChannelId.toInt64(), forKey: "linkedBotChannelId")
|
case .unknown:
|
||||||
} else {
|
|
||||||
encoder.encodeNil(forKey: "linkedBotChannelId")
|
encoder.encodeNil(forKey: "linkedBotChannelId")
|
||||||
|
case let .known(value):
|
||||||
|
if let value = value {
|
||||||
|
encoder.encodeInt64(value.toInt64(), forKey: "linkedBotChannelId")
|
||||||
|
} else {
|
||||||
|
encoder.encodeInt64(0, forKey: "linkedBotChannelId")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1632,7 +1650,7 @@ public final class CachedUserData: CachedPeerData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public func withUpdatedLinkedBotChannelId(_ linkedBotChannelId: PeerId?) -> CachedUserData {
|
public func withUpdatedLinkedBotChannelId(_ linkedBotChannelId: PeerId?) -> CachedUserData {
|
||||||
return CachedUserData(about: self.about, botInfo: self.botInfo, editableBotInfo: self.editableBotInfo, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, isBlocked: self.isBlocked, commonGroupCount: self.commonGroupCount, voiceCallsAvailable: self.voiceCallsAvailable, videoCallsAvailable: self.videoCallsAvailable, callsPrivate: self.callsPrivate, canPinMessages: self.canPinMessages, hasScheduledMessages: self.hasScheduledMessages, autoremoveTimeout: self.autoremoveTimeout, themeEmoticon: self.themeEmoticon, photo: self.photo, personalPhoto: self.personalPhoto, fallbackPhoto: self.fallbackPhoto, voiceMessagesAvailable: self.voiceMessagesAvailable, wallpaper: self.wallpaper, flags: self.flags, businessHours: self.businessHours, businessLocation: self.businessLocation, greetingMessage: self.greetingMessage, awayMessage: self.awayMessage, connectedBot: self.connectedBot, businessIntro: self.businessIntro, birthday: self.birthday, personalChannel: self.personalChannel, botPreview: self.botPreview, starGiftsCount: self.starGiftsCount, starRefProgram: self.starRefProgram, verification: self.verification, sendPaidMessageStars: self.sendPaidMessageStars, disallowedGifts: disallowedGifts, botGroupAdminRights: self.botGroupAdminRights, botChannelAdminRights: self.botChannelAdminRights, starRating: self.starRating, pendingStarRating: self.pendingStarRating, linkedBotChannelId: linkedBotChannelId)
|
return CachedUserData(about: self.about, botInfo: self.botInfo, editableBotInfo: self.editableBotInfo, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, isBlocked: self.isBlocked, commonGroupCount: self.commonGroupCount, voiceCallsAvailable: self.voiceCallsAvailable, videoCallsAvailable: self.videoCallsAvailable, callsPrivate: self.callsPrivate, canPinMessages: self.canPinMessages, hasScheduledMessages: self.hasScheduledMessages, autoremoveTimeout: self.autoremoveTimeout, themeEmoticon: self.themeEmoticon, photo: self.photo, personalPhoto: self.personalPhoto, fallbackPhoto: self.fallbackPhoto, voiceMessagesAvailable: self.voiceMessagesAvailable, wallpaper: self.wallpaper, flags: self.flags, businessHours: self.businessHours, businessLocation: self.businessLocation, greetingMessage: self.greetingMessage, awayMessage: self.awayMessage, connectedBot: self.connectedBot, businessIntro: self.businessIntro, birthday: self.birthday, personalChannel: self.personalChannel, botPreview: self.botPreview, starGiftsCount: self.starGiftsCount, starRefProgram: self.starRefProgram, verification: self.verification, sendPaidMessageStars: self.sendPaidMessageStars, disallowedGifts: disallowedGifts, botGroupAdminRights: self.botGroupAdminRights, botChannelAdminRights: self.botChannelAdminRights, starRating: self.starRating, pendingStarRating: self.pendingStarRating, linkedBotChannelId: .known(linkedBotChannelId))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -42,6 +42,7 @@ public struct BotUserInfoFlags: OptionSet {
|
|||||||
public static let canEdit = BotUserInfoFlags(rawValue: (1 << 5))
|
public static let canEdit = BotUserInfoFlags(rawValue: (1 << 5))
|
||||||
public static let isBusiness = BotUserInfoFlags(rawValue: (1 << 6))
|
public static let isBusiness = BotUserInfoFlags(rawValue: (1 << 6))
|
||||||
public static let hasWebApp = BotUserInfoFlags(rawValue: (1 << 7))
|
public static let hasWebApp = BotUserInfoFlags(rawValue: (1 << 7))
|
||||||
|
public static let hasForum = BotUserInfoFlags(rawValue: (1 << 8))
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct BotUserInfo: PostboxCoding, Equatable {
|
public struct BotUserInfo: PostboxCoding, Equatable {
|
||||||
|
|||||||
@ -858,6 +858,39 @@ public extension TelegramEngine.EngineData.Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public struct LinkedBotForumPeerId: TelegramEngineDataItem, TelegramEngineMapKeyDataItem, PostboxViewDataItem {
|
||||||
|
public typealias Result = EnginePeerCachedInfoItem<EnginePeer.Id?>
|
||||||
|
|
||||||
|
fileprivate var id: EnginePeer.Id
|
||||||
|
public var mapKey: EnginePeer.Id {
|
||||||
|
return self.id
|
||||||
|
}
|
||||||
|
|
||||||
|
public init(id: EnginePeer.Id) {
|
||||||
|
self.id = id
|
||||||
|
}
|
||||||
|
|
||||||
|
var key: PostboxViewKey {
|
||||||
|
return .cachedPeerData(peerId: self.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func extract(view: PostboxView) -> Result {
|
||||||
|
guard let view = view as? CachedPeerDataView else {
|
||||||
|
preconditionFailure()
|
||||||
|
}
|
||||||
|
if let cachedData = view.cachedPeerData as? CachedUserData {
|
||||||
|
switch cachedData.linkedBotChannelId {
|
||||||
|
case let .known(id):
|
||||||
|
return .known(id)
|
||||||
|
case .unknown:
|
||||||
|
return .unknown
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return .unknown
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public struct StatusSettings: TelegramEngineDataItem, TelegramEngineMapKeyDataItem, PostboxViewDataItem {
|
public struct StatusSettings: TelegramEngineDataItem, TelegramEngineMapKeyDataItem, PostboxViewDataItem {
|
||||||
public typealias Result = EnginePeer.StatusSettings?
|
public typealias Result = EnginePeer.StatusSettings?
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,48 @@ import MtProtoKit
|
|||||||
|
|
||||||
|
|
||||||
func _internal_requestStartBot(account: Account, botPeerId: PeerId, payload: String?) -> Signal<Void, NoError> {
|
func _internal_requestStartBot(account: Account, botPeerId: PeerId, payload: String?) -> Signal<Void, NoError> {
|
||||||
|
#if DEBUG
|
||||||
|
if "".isEmpty {
|
||||||
|
return account.postbox.loadedPeerWithId(botPeerId)
|
||||||
|
|> mapToSignal { botPeer -> Signal<Void, NoError> in
|
||||||
|
guard let inputUser = apiInputUser(botPeer), let botPeer = botPeer as? TelegramUser, let botInfo = botPeer.botInfo else {
|
||||||
|
return .complete()
|
||||||
|
}
|
||||||
|
if botInfo.flags.contains(.hasForum) {
|
||||||
|
return account.network.request(Api.functions.channels.createBotForum(botId: inputUser))
|
||||||
|
|> mapToSignal { result -> Signal<Void, MTRpcError> in
|
||||||
|
account.stateManager.addUpdates(result)
|
||||||
|
|
||||||
|
for update in result.allUpdates {
|
||||||
|
if case let .updateChannel(channelId) = update {
|
||||||
|
let _ = (account.postbox.transaction { transaction -> Void in
|
||||||
|
transaction.updatePeerCachedData(peerIds: Set([botPeerId]), update: { _, current in
|
||||||
|
guard var current = current as? CachedUserData else {
|
||||||
|
return current
|
||||||
|
}
|
||||||
|
|
||||||
|
current = current.withUpdatedLinkedBotChannelId(PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(channelId)))
|
||||||
|
|
||||||
|
return current
|
||||||
|
})
|
||||||
|
} |> delay(0.4, queue: .mainQueue())).startStandalone()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return .complete()
|
||||||
|
}
|
||||||
|
|> `catch` { _ -> Signal<Void, NoError> in
|
||||||
|
return .complete()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return enqueueMessages(account: account, peerId: botPeerId, messages: [.message(text: "/start", attributes: [], inlineStickers: [:], mediaReference: nil, threadId: nil, replyToMessageId: nil, replyToStoryId: nil, localGroupingKey: nil, correlationId: nil, bubbleUpEmojiOrStickersets: [])]) |> mapToSignal { _ -> Signal<Void, NoError> in
|
||||||
|
return .complete()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if let payload = payload, !payload.isEmpty {
|
if let payload = payload, !payload.isEmpty {
|
||||||
return account.postbox.loadedPeerWithId(botPeerId)
|
return account.postbox.loadedPeerWithId(botPeerId)
|
||||||
|> mapToSignal { botPeer -> Signal<Void, NoError> in
|
|> mapToSignal { botPeer -> Signal<Void, NoError> in
|
||||||
|
|||||||
@ -824,7 +824,7 @@ extension StarGift {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
self = .generic(StarGift.Gift(id: id, title: title, file: file, price: stars, convertStars: convertStars, availability: availability, soldOut: soldOut, flags: flags, upgradeStars: upgradeStars, releasedBy: releasedBy?.peerId, perUserLimit: perUserLimit))
|
self = .generic(StarGift.Gift(id: id, title: title, file: file, price: stars, convertStars: convertStars, availability: availability, soldOut: soldOut, flags: flags, upgradeStars: upgradeStars, releasedBy: releasedBy?.peerId, perUserLimit: perUserLimit))
|
||||||
case let .starGiftUnique(flags, id, title, slug, num, ownerPeerId, ownerName, ownerAddress, attributes, availabilityIssued, availabilityTotal, giftAddress, resellAmounts, releasedBy):
|
case let .starGiftUnique(flags, id, _, title, slug, num, ownerPeerId, ownerName, ownerAddress, attributes, availabilityIssued, availabilityTotal, giftAddress, resellAmounts, releasedBy, _, _):
|
||||||
let owner: StarGift.UniqueGift.Owner
|
let owner: StarGift.UniqueGift.Owner
|
||||||
if let ownerAddress {
|
if let ownerAddress {
|
||||||
owner = .address(ownerAddress)
|
owner = .address(ownerAddress)
|
||||||
|
|||||||
@ -1293,7 +1293,7 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode {
|
|||||||
if let photoRepresentation = invite.photoRepresentation {
|
if let photoRepresentation = invite.photoRepresentation {
|
||||||
photo.append(photoRepresentation)
|
photo.append(photoRepresentation)
|
||||||
}
|
}
|
||||||
let channel = TelegramChannel(id: PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(0)), accessHash: .genericPublic(0), title: invite.title, username: nil, photo: photo, creationDate: 0, version: 0, participationStatus: .left, info: .broadcast(TelegramChannelBroadcastInfo(flags: [])), flags: [], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil, usernames: [], storiesHidden: nil, nameColor: invite.nameColor, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, emojiStatus: nil, approximateBoostLevel: nil, subscriptionUntilDate: nil, verificationIconFileId: nil, sendPaidMessageStars: nil, linkedMonoforumId: nil)
|
let channel = TelegramChannel(id: PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(0)), accessHash: .genericPublic(0), title: invite.title, username: nil, photo: photo, creationDate: 0, version: 0, participationStatus: .left, info: .broadcast(TelegramChannelBroadcastInfo(flags: [])), flags: [], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil, usernames: [], storiesHidden: nil, nameColor: invite.nameColor, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, emojiStatus: nil, approximateBoostLevel: nil, subscriptionUntilDate: nil, verificationIconFileId: nil, sendPaidMessageStars: nil, linkedMonoforumId: nil, linkedBotId: nil)
|
||||||
let invoice = TelegramMediaInvoice(title: "", description: "", photo: nil, receiptMessageId: nil, currency: "XTR", totalAmount: subscriptionPricing.amount.value, startParam: "", extendedMedia: nil, subscriptionPeriod: nil, flags: [], version: 0)
|
let invoice = TelegramMediaInvoice(title: "", description: "", photo: nil, receiptMessageId: nil, currency: "XTR", totalAmount: subscriptionPricing.amount.value, startParam: "", extendedMedia: nil, subscriptionPeriod: nil, flags: [], version: 0)
|
||||||
|
|
||||||
inputData.set(.single(BotCheckoutController.InputData(
|
inputData.set(.single(BotCheckoutController.InputData(
|
||||||
|
|||||||
@ -87,7 +87,7 @@ private func filterOriginalMessageFlags(_ message: Message) -> Message {
|
|||||||
|
|
||||||
private func filterMessageChannelPeer(_ peer: Peer) -> Peer {
|
private func filterMessageChannelPeer(_ peer: Peer) -> Peer {
|
||||||
if let peer = peer as? TelegramChannel {
|
if let peer = peer as? TelegramChannel {
|
||||||
return TelegramChannel(id: peer.id, accessHash: peer.accessHash, title: peer.title, username: peer.username, photo: peer.photo, creationDate: peer.creationDate, version: peer.version, participationStatus: peer.participationStatus, info: .group(TelegramChannelGroupInfo(flags: [])), flags: peer.flags, restrictionInfo: peer.restrictionInfo, adminRights: peer.adminRights, bannedRights: peer.bannedRights, defaultBannedRights: peer.defaultBannedRights, usernames: peer.usernames, storiesHidden: peer.storiesHidden, nameColor: peer.nameColor, backgroundEmojiId: peer.backgroundEmojiId, profileColor: peer.profileColor, profileBackgroundEmojiId: peer.profileBackgroundEmojiId, emojiStatus: peer.emojiStatus, approximateBoostLevel: peer.approximateBoostLevel, subscriptionUntilDate: peer.subscriptionUntilDate, verificationIconFileId: peer.verificationIconFileId, sendPaidMessageStars: peer.sendPaidMessageStars, linkedMonoforumId: peer.linkedMonoforumId)
|
return TelegramChannel(id: peer.id, accessHash: peer.accessHash, title: peer.title, username: peer.username, photo: peer.photo, creationDate: peer.creationDate, version: peer.version, participationStatus: peer.participationStatus, info: .group(TelegramChannelGroupInfo(flags: [])), flags: peer.flags, restrictionInfo: peer.restrictionInfo, adminRights: peer.adminRights, bannedRights: peer.bannedRights, defaultBannedRights: peer.defaultBannedRights, usernames: peer.usernames, storiesHidden: peer.storiesHidden, nameColor: peer.nameColor, backgroundEmojiId: peer.backgroundEmojiId, profileColor: peer.profileColor, profileBackgroundEmojiId: peer.profileBackgroundEmojiId, emojiStatus: peer.emojiStatus, approximateBoostLevel: peer.approximateBoostLevel, subscriptionUntilDate: peer.subscriptionUntilDate, verificationIconFileId: peer.verificationIconFileId, sendPaidMessageStars: peer.sendPaidMessageStars, linkedMonoforumId: peer.linkedMonoforumId, linkedBotId: peer.linkedBotId)
|
||||||
}
|
}
|
||||||
return peer
|
return peer
|
||||||
}
|
}
|
||||||
|
|||||||
@ -332,7 +332,7 @@ private func notificationsPeerCategoryEntries(peerId: EnginePeer.Id, notificatio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
existingThreadIds.insert(value.threadId)
|
existingThreadIds.insert(value.threadId)
|
||||||
entries.append(.exception(Int32(index), presentationData.dateTimeFormat, presentationData.nameDisplayOrder, .channel(TelegramChannel(id: peerId, accessHash: nil, title: "", username: nil, photo: [], creationDate: 0, version: 0, participationStatus: .member, info: .group(TelegramChannelGroupInfo(flags: [])), flags: [.isForum], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil, usernames: [], storiesHidden: nil, nameColor: nil, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, emojiStatus: nil, approximateBoostLevel: nil, subscriptionUntilDate: nil, verificationIconFileId: nil, sendPaidMessageStars: nil, linkedMonoforumId: nil)), value.threadId, value.info, title, value.notificationSettings._asNotificationSettings(), state.editing, state.revealedThreadId == value.threadId))
|
entries.append(.exception(Int32(index), presentationData.dateTimeFormat, presentationData.nameDisplayOrder, .channel(TelegramChannel(id: peerId, accessHash: nil, title: "", username: nil, photo: [], creationDate: 0, version: 0, participationStatus: .member, info: .group(TelegramChannelGroupInfo(flags: [])), flags: [.isForum], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil, usernames: [], storiesHidden: nil, nameColor: nil, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, emojiStatus: nil, approximateBoostLevel: nil, subscriptionUntilDate: nil, verificationIconFileId: nil, sendPaidMessageStars: nil, linkedMonoforumId: nil, linkedBotId: nil)), value.threadId, value.info, title, value.notificationSettings._asNotificationSettings(), state.editing, state.revealedThreadId == value.threadId))
|
||||||
index += 1
|
index += 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -963,7 +963,7 @@ final class ThemeAccentColorControllerNode: ASDisplayNode, ASScrollViewDelegate
|
|||||||
let selfPeer: EnginePeer = .user(TelegramUser(id: self.context.account.peerId, 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))
|
let selfPeer: EnginePeer = .user(TelegramUser(id: self.context.account.peerId, 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))
|
||||||
let peer1: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(1)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_1_Name, 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))
|
let peer1: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(1)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_1_Name, 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))
|
||||||
let peer2: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(2)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_2_Name, 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))
|
let peer2: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(2)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_2_Name, 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))
|
||||||
let peer3: EnginePeer = .channel(TelegramChannel(id: PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(3)), accessHash: nil, title: self.presentationData.strings.Appearance_ThemePreview_ChatList_3_Name, username: nil, photo: [], creationDate: 0, version: 0, participationStatus: .member, info: .group(.init(flags: [])), flags: [], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil, usernames: [], storiesHidden: nil, nameColor: nil, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, emojiStatus: nil, approximateBoostLevel: nil, subscriptionUntilDate: nil, verificationIconFileId: nil, sendPaidMessageStars: nil, linkedMonoforumId: nil))
|
let peer3: EnginePeer = .channel(TelegramChannel(id: PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(3)), accessHash: nil, title: self.presentationData.strings.Appearance_ThemePreview_ChatList_3_Name, username: nil, photo: [], creationDate: 0, version: 0, participationStatus: .member, info: .group(.init(flags: [])), flags: [], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil, usernames: [], storiesHidden: nil, nameColor: nil, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, emojiStatus: nil, approximateBoostLevel: nil, subscriptionUntilDate: nil, verificationIconFileId: nil, sendPaidMessageStars: nil, linkedMonoforumId: nil, linkedBotId: nil))
|
||||||
let peer3Author: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(4)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_3_AuthorName, 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))
|
let peer3Author: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(4)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_3_AuthorName, 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))
|
||||||
let peer4: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(4)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_4_Name, 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))
|
let peer4: EnginePeer = .user(TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(4)), accessHash: nil, firstName: self.presentationData.strings.Appearance_ThemePreview_ChatList_4_Name, 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))
|
||||||
|
|
||||||
|
|||||||
@ -163,6 +163,11 @@ extension ChatControllerImpl {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let historyNodeData = contentData.state.historyNodeData {
|
||||||
|
self.updateChatLocationToOther(chatLocation: historyNodeData.chatLocation)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
apply({ [weak self, weak contentData] forceAnimation in
|
apply({ [weak self, weak contentData] forceAnimation in
|
||||||
guard let self, let contentData, self.pendingContentData?.contentData === contentData else {
|
guard let self, let contentData, self.pendingContentData?.contentData === contentData else {
|
||||||
return
|
return
|
||||||
@ -170,6 +175,7 @@ extension ChatControllerImpl {
|
|||||||
|
|
||||||
self.contentData = contentData
|
self.contentData = contentData
|
||||||
self.pendingContentData = nil
|
self.pendingContentData = nil
|
||||||
|
|
||||||
self.contentDataUpdated(synchronous: true, forceAnimation: forceAnimation, previousState: contentData.state)
|
self.contentDataUpdated(synchronous: true, forceAnimation: forceAnimation, previousState: contentData.state)
|
||||||
|
|
||||||
self.chatThemeEmoticonPromise.set(contentData.chatThemeEmoticonPromise.get())
|
self.chatThemeEmoticonPromise.set(contentData.chatThemeEmoticonPromise.get())
|
||||||
@ -187,6 +193,12 @@ extension ChatControllerImpl {
|
|||||||
guard let self, let contentData, self.contentData === contentData else {
|
guard let self, let contentData, self.contentData === contentData else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let historyNodeData = contentData.state.historyNodeData {
|
||||||
|
self.updateChatLocationToOther(chatLocation: historyNodeData.chatLocation)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
self.contentDataUpdated(synchronous: false, forceAnimation: false, previousState: previousState)
|
self.contentDataUpdated(synchronous: false, forceAnimation: false, previousState: previousState)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@ -8822,15 +8822,36 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let startingBot = self.startingBot
|
Task { @MainActor [weak self] in
|
||||||
startingBot.set(true)
|
guard let self, let navigationController = self.navigationController as? NavigationController else {
|
||||||
self.editMessageDisposable.set((self.context.engine.messages.requestStartBot(botPeerId: peerId, payload: payload) |> deliverOnMainQueue |> afterDisposed({
|
return
|
||||||
startingBot.set(false)
|
|
||||||
})).startStrict(completed: { [weak self] in
|
|
||||||
if let strongSelf = self {
|
|
||||||
strongSelf.updateChatPresentationInterfaceState(animated: true, interactive: true, { $0.updatedBotStartPayload(nil) })
|
|
||||||
}
|
}
|
||||||
}))
|
|
||||||
|
#if DEBUG
|
||||||
|
let botForumId = await self.context.engine.data.get(
|
||||||
|
TelegramEngine.EngineData.Item.Peer.LinkedBotForumPeerId(id: peerId)
|
||||||
|
).get()
|
||||||
|
if case let .known(botForumIdValue) = botForumId, let botForumIdValue {
|
||||||
|
let botForum = await self.context.engine.data.get(
|
||||||
|
TelegramEngine.EngineData.Item.Peer.Peer(id: botForumIdValue)
|
||||||
|
).get()
|
||||||
|
|
||||||
|
if let botForum {
|
||||||
|
self.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: self.context, chatLocation: .peer(botForum), keepStack: .always))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
let startingBot = self.startingBot
|
||||||
|
startingBot.set(true)
|
||||||
|
self.editMessageDisposable.set((self.context.engine.messages.requestStartBot(botPeerId: peerId, payload: payload) |> deliverOnMainQueue |> afterDisposed({
|
||||||
|
startingBot.set(false)
|
||||||
|
})).startStrict(completed: { [weak self] in
|
||||||
|
if let strongSelf = self {
|
||||||
|
strongSelf.updateChatPresentationInterfaceState(animated: true, interactive: true, { $0.updatedBotStartPayload(nil) })
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func openResolved(result: ResolvedUrl, sourceMessageId: MessageId?, progress: Promise<Bool>? = nil, forceExternal: Bool = false, concealed: Bool = false, commit: @escaping () -> Void = {}) {
|
func openResolved(result: ResolvedUrl, sourceMessageId: MessageId?, progress: Promise<Bool>? = nil, forceExternal: Bool = false, concealed: Bool = false, commit: @escaping () -> Void = {}) {
|
||||||
@ -10063,6 +10084,35 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
private var isUpdatingChatLocationThread: Bool = false
|
private var isUpdatingChatLocationThread: Bool = false
|
||||||
var currentChatSwitchDirection: ChatControllerAnimateInnerChatSwitchDirection?
|
var currentChatSwitchDirection: ChatControllerAnimateInnerChatSwitchDirection?
|
||||||
|
|
||||||
|
func updateChatLocationToOther(chatLocation: ChatLocation) {
|
||||||
|
if self.isUpdatingChatLocationThread {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
self.saveInterfaceState()
|
||||||
|
self.chatDisplayNode.dismissTextInput()
|
||||||
|
|
||||||
|
let updatedChatLocation: ChatLocation = chatLocation
|
||||||
|
let chatLocationContextHolder = Atomic<ChatLocationContextHolder?>(value: nil)
|
||||||
|
let historyNode = self.chatDisplayNode.createHistoryNodeForChatLocation(chatLocation: updatedChatLocation, chatLocationContextHolder: chatLocationContextHolder)
|
||||||
|
self.isUpdatingChatLocationThread = true
|
||||||
|
self.reloadChatLocation(chatLocation: updatedChatLocation, chatLocationContextHolder: chatLocationContextHolder, historyNode: historyNode, apply: { [weak self, weak historyNode] apply in
|
||||||
|
guard let self, let historyNode else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
self.currentChatSwitchDirection = nil
|
||||||
|
self.chatLocation = updatedChatLocation
|
||||||
|
historyNode.areContentAnimationsEnabled = true
|
||||||
|
self.chatDisplayNode.prepareSwitchToChatLocation(historyNode: historyNode, animationDirection: nil)
|
||||||
|
|
||||||
|
apply(self.didAppear)
|
||||||
|
|
||||||
|
self.currentChatSwitchDirection = nil
|
||||||
|
self.isUpdatingChatLocationThread = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
public func updateChatLocationThread(threadId: Int64?, animationDirection: ChatControllerAnimateInnerChatSwitchDirection? = nil) {
|
public func updateChatLocationThread(threadId: Int64?, animationDirection: ChatControllerAnimateInnerChatSwitchDirection? = nil) {
|
||||||
if self.isUpdatingChatLocationThread {
|
if self.isUpdatingChatLocationThread {
|
||||||
return
|
return
|
||||||
|
|||||||
@ -81,6 +81,23 @@ extension ChatControllerImpl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct HistoryNodeData: Equatable {
|
||||||
|
let chatLocation: ChatLocation
|
||||||
|
let chatLocationContextHolder: Atomic<ChatLocationContextHolder?>
|
||||||
|
|
||||||
|
init(chatLocation: ChatLocation, chatLocationContextHolder: Atomic<ChatLocationContextHolder?>) {
|
||||||
|
self.chatLocation = chatLocation
|
||||||
|
self.chatLocationContextHolder = chatLocationContextHolder
|
||||||
|
}
|
||||||
|
|
||||||
|
static func ==(lhs: HistoryNodeData, rhs: HistoryNodeData) -> Bool {
|
||||||
|
if lhs.chatLocation != rhs.chatLocation {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct State {
|
struct State {
|
||||||
var peerView: PeerView?
|
var peerView: PeerView?
|
||||||
var threadInfo: EngineMessageHistoryThread.Info?
|
var threadInfo: EngineMessageHistoryThread.Info?
|
||||||
@ -144,6 +161,8 @@ extension ChatControllerImpl {
|
|||||||
var removePaidMessageFeeData: ChatPresentationInterfaceState.RemovePaidMessageFeeData?
|
var removePaidMessageFeeData: ChatPresentationInterfaceState.RemovePaidMessageFeeData?
|
||||||
|
|
||||||
var preloadNextChatPeerId: EnginePeer.Id?
|
var preloadNextChatPeerId: EnginePeer.Id?
|
||||||
|
|
||||||
|
var historyNodeData: HistoryNodeData?
|
||||||
}
|
}
|
||||||
|
|
||||||
private let presentationData: PresentationData
|
private let presentationData: PresentationData
|
||||||
@ -792,6 +811,7 @@ extension ChatControllerImpl {
|
|||||||
var sendPaidMessageStars: StarsAmount?
|
var sendPaidMessageStars: StarsAmount?
|
||||||
var alwaysShowGiftButton = false
|
var alwaysShowGiftButton = false
|
||||||
var disallowedGifts: TelegramDisallowedGifts?
|
var disallowedGifts: TelegramDisallowedGifts?
|
||||||
|
var switchToBotForum: EnginePeer.Id?
|
||||||
if let peer = peerView.peers[peerView.peerId] {
|
if let peer = peerView.peers[peerView.peerId] {
|
||||||
if let cachedData = peerView.cachedData as? CachedUserData {
|
if let cachedData = peerView.cachedData as? CachedUserData {
|
||||||
contactStatus = ChatContactStatus(canAddContact: !peerView.peerIsContact, peerStatusSettings: cachedData.peerStatusSettings, invitedBy: nil, managingBot: managingBot)
|
contactStatus = ChatContactStatus(canAddContact: !peerView.peerIsContact, peerStatusSettings: cachedData.peerStatusSettings, invitedBy: nil, managingBot: managingBot)
|
||||||
@ -806,6 +826,11 @@ extension ChatControllerImpl {
|
|||||||
}
|
}
|
||||||
disallowedGifts = cachedData.disallowedGifts
|
disallowedGifts = cachedData.disallowedGifts
|
||||||
}
|
}
|
||||||
|
if case let .known(value) = cachedData.linkedBotChannelId {
|
||||||
|
if let value {
|
||||||
|
switchToBotForum = value
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if let cachedData = peerView.cachedData as? CachedGroupData {
|
} else if let cachedData = peerView.cachedData as? CachedGroupData {
|
||||||
var invitedBy: Peer?
|
var invitedBy: Peer?
|
||||||
if let invitedByPeerId = cachedData.invitedBy {
|
if let invitedByPeerId = cachedData.invitedBy {
|
||||||
@ -1005,6 +1030,15 @@ extension ChatControllerImpl {
|
|||||||
|
|
||||||
strongSelf.state.renderedPeer = renderedPeer
|
strongSelf.state.renderedPeer = renderedPeer
|
||||||
strongSelf.state.adMessage = adMessage
|
strongSelf.state.adMessage = adMessage
|
||||||
|
|
||||||
|
if let switchToBotForum {
|
||||||
|
strongSelf.state.historyNodeData = HistoryNodeData(
|
||||||
|
chatLocation: .peer(id: switchToBotForum),
|
||||||
|
chatLocationContextHolder: Atomic(value: nil)
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
strongSelf.state.historyNodeData = nil
|
||||||
|
}
|
||||||
|
|
||||||
if case .standard(.default) = mode, let channel = renderedPeer?.chatMainPeer as? TelegramChannel, case .broadcast = channel.info {
|
if case .standard(.default) = mode, let channel = renderedPeer?.chatMainPeer as? TelegramChannel, case .broadcast = channel.info {
|
||||||
var isRegularChat = false
|
var isRegularChat = false
|
||||||
@ -2150,8 +2184,23 @@ extension ChatControllerImpl {
|
|||||||
topPinnedMessage = ChatControllerImpl.topPinnedScrollMessage(context: context, chatLocation: chatLocation, historyNode: historyNode, scrolledToMessageId: self.scrolledToMessageId.get())
|
topPinnedMessage = ChatControllerImpl.topPinnedScrollMessage(context: context, chatLocation: chatLocation, historyNode: historyNode, scrolledToMessageId: self.scrolledToMessageId.get())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let cachedData: Signal<(CachedPeerData?, [MessageId: Message]), NoError>
|
||||||
|
if let peerId = chatLocation.peerId {
|
||||||
|
cachedData = context.account.postbox.combinedView(keys: [
|
||||||
|
.cachedPeerDataWithMessages(peerId: peerId)
|
||||||
|
]) |> map { views -> (CachedPeerData?, [MessageId: Message]) in
|
||||||
|
guard let view = views.views[.cachedPeerDataWithMessages(peerId: peerId)] as? CachedPeerDataView else {
|
||||||
|
return (nil, [:])
|
||||||
|
}
|
||||||
|
return (view.cachedPeerData, view.associatedMessages)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cachedData = .single((nil, [:]))
|
||||||
|
}
|
||||||
|
|
||||||
self.cachedDataDisposable?.dispose()
|
self.cachedDataDisposable?.dispose()
|
||||||
self.cachedDataDisposable = combineLatest(queue: .mainQueue(), historyNode.cachedPeerDataAndMessages,
|
self.cachedDataDisposable = combineLatest(queue: .mainQueue(),
|
||||||
|
cachedData,
|
||||||
hasPendingMessages,
|
hasPendingMessages,
|
||||||
isTopReplyThreadMessageShown,
|
isTopReplyThreadMessageShown,
|
||||||
topPinnedMessage,
|
topPinnedMessage,
|
||||||
@ -2237,7 +2286,7 @@ extension ChatControllerImpl {
|
|||||||
pinnedMessageId = replyThreadMessage.effectiveTopId
|
pinnedMessageId = replyThreadMessage.effectiveTopId
|
||||||
}
|
}
|
||||||
if let pinnedMessageId = pinnedMessageId {
|
if let pinnedMessageId = pinnedMessageId {
|
||||||
if let message = messages?[pinnedMessageId] {
|
if let message = messages[pinnedMessageId] {
|
||||||
pinnedMessage = ChatPinnedMessage(message: message, index: 0, totalCount: 1, topMessageId: message.id)
|
pinnedMessage = ChatPinnedMessage(message: message, index: 0, totalCount: 1, topMessageId: message.id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5293,102 +5293,4 @@ class ChatControllerNode: ASDisplayNode, ASScrollViewDelegate {
|
|||||||
animationDirection: animationDirection
|
animationDirection: animationDirection
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateChatLocation(chatLocation: ChatLocation, transition: ContainedViewLayoutTransition, tabSwitchDirection: ChatControllerAnimateInnerChatSwitchDirection?) {
|
|
||||||
if chatLocation == self.chatLocation {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
self.chatLocation = chatLocation
|
|
||||||
|
|
||||||
self.chatLocationContextHolder = Atomic<ChatLocationContextHolder?>(value: nil)
|
|
||||||
let historyNode = ChatHistoryListNodeImpl(
|
|
||||||
context: self.context,
|
|
||||||
updatedPresentationData: self.controller?.updatedPresentationData ?? (self.context.sharedContext.currentPresentationData.with({ $0 }), self.context.sharedContext.presentationData),
|
|
||||||
chatLocation: chatLocation,
|
|
||||||
chatLocationContextHolder: self.chatLocationContextHolder,
|
|
||||||
adMessagesContext: self.adMessagesContext,
|
|
||||||
tag: nil,
|
|
||||||
source: .default,
|
|
||||||
subject: nil,
|
|
||||||
controllerInteraction: self.controllerInteraction,
|
|
||||||
selectedMessages: self.selectedMessagesPromise.get(),
|
|
||||||
rotated: self.controllerInteraction.chatIsRotated,
|
|
||||||
isChatPreview: false,
|
|
||||||
messageTransitionNode: { [weak self] in
|
|
||||||
return self?.messageTransitionNode
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
var getContentAreaInScreenSpaceImpl: (() -> CGRect)?
|
|
||||||
var onTransitionEventImpl: ((ContainedViewLayoutTransition) -> Void)?
|
|
||||||
let messageTransitionNode = ChatMessageTransitionNodeImpl(listNode: historyNode, getContentAreaInScreenSpace: {
|
|
||||||
return getContentAreaInScreenSpaceImpl?() ?? CGRect()
|
|
||||||
}, onTransitionEvent: { transition in
|
|
||||||
onTransitionEventImpl?(transition)
|
|
||||||
})
|
|
||||||
|
|
||||||
getContentAreaInScreenSpaceImpl = { [weak self] in
|
|
||||||
guard let strongSelf = self else {
|
|
||||||
return CGRect()
|
|
||||||
}
|
|
||||||
|
|
||||||
return strongSelf.view.convert(strongSelf.frameForVisibleArea(), to: nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
onTransitionEventImpl = { [weak self] transition in
|
|
||||||
guard let strongSelf = self else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (strongSelf.context.sharedContext.currentPresentationData.with({ $0 })).reduceMotion {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if strongSelf.context.sharedContext.energyUsageSettings.fullTranslucency {
|
|
||||||
strongSelf.backgroundNode.animateEvent(transition: transition, extendAnimation: false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
self.wrappingNode.contentNode.insertSubnode(messageTransitionNode, aboveSubnode: self.messageTransitionNode)
|
|
||||||
self.messageTransitionNode.removeFromSupernode()
|
|
||||||
self.messageTransitionNode = messageTransitionNode
|
|
||||||
|
|
||||||
let previousHistoryNode = self.historyNode
|
|
||||||
previousHistoryNode.supernode?.insertSubnode(historyNode, aboveSubnode: previousHistoryNode)
|
|
||||||
self.historyNode = historyNode
|
|
||||||
|
|
||||||
self.setupHistoryNode()
|
|
||||||
|
|
||||||
historyNode.position = previousHistoryNode.position
|
|
||||||
historyNode.bounds = previousHistoryNode.bounds
|
|
||||||
historyNode.transform = previousHistoryNode.transform
|
|
||||||
|
|
||||||
if let currentListViewLayout = self.currentListViewLayout {
|
|
||||||
let updateSizeAndInsets = ListViewUpdateSizeAndInsets(size: currentListViewLayout.size, insets: currentListViewLayout.insets, scrollIndicatorInsets: currentListViewLayout.scrollIndicatorInsets, duration: 0.0, curve: .Default(duration: nil), ensureTopInsetForOverlayHighlightedItems: nil, customAnimationTransition: nil)
|
|
||||||
historyNode.updateLayout(transition: .immediate, updateSizeAndInsets: updateSizeAndInsets, additionalScrollDistance: 0.0, scrollToTop: false, completion: {})
|
|
||||||
}
|
|
||||||
|
|
||||||
if let validLayout = self.validLayout, transition.isAnimated, let tabSwitchDirection {
|
|
||||||
var offsetMultiplier = CGPoint()
|
|
||||||
switch tabSwitchDirection {
|
|
||||||
case .up:
|
|
||||||
offsetMultiplier.y = -1.0
|
|
||||||
case .down:
|
|
||||||
offsetMultiplier.y = 1.0
|
|
||||||
case .left:
|
|
||||||
offsetMultiplier.x = -1.0
|
|
||||||
case .right:
|
|
||||||
offsetMultiplier.x = 1.0
|
|
||||||
}
|
|
||||||
|
|
||||||
previousHistoryNode.clipsToBounds = true
|
|
||||||
historyNode.clipsToBounds = true
|
|
||||||
|
|
||||||
transition.animatePosition(layer: historyNode.layer, from: CGPoint(x: offsetMultiplier.x * validLayout.0.size.width, y: offsetMultiplier.y * validLayout.0.size.height), to: CGPoint(), removeOnCompletion: true, additive: true)
|
|
||||||
transition.animatePosition(layer: previousHistoryNode.layer, from: CGPoint(), to: CGPoint(x: -offsetMultiplier.x * validLayout.0.size.width, y: -offsetMultiplier.y * validLayout.0.size.height), removeOnCompletion: false, additive: true, completion: { [weak previousHistoryNode, weak historyNode] _ in
|
|
||||||
previousHistoryNode?.removeFromSupernode()
|
|
||||||
historyNode?.clipsToBounds = false
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
previousHistoryNode.removeFromSupernode()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -842,7 +842,8 @@ public final class ChatHistoryListNodeImpl: ListView, ChatHistoryNode, ChatHisto
|
|||||||
subscriptionUntilDate: nil,
|
subscriptionUntilDate: nil,
|
||||||
verificationIconFileId: nil,
|
verificationIconFileId: nil,
|
||||||
sendPaidMessageStars: nil,
|
sendPaidMessageStars: nil,
|
||||||
linkedMonoforumId: nil
|
linkedMonoforumId: nil,
|
||||||
|
linkedBotId: nil
|
||||||
)
|
)
|
||||||
messagePeers[author.id] = author
|
messagePeers[author.id] = author
|
||||||
|
|
||||||
|
|||||||
@ -343,7 +343,7 @@ func openResolvedUrlImpl(
|
|||||||
if let photoRepresentation = invite.photoRepresentation {
|
if let photoRepresentation = invite.photoRepresentation {
|
||||||
photo.append(photoRepresentation)
|
photo.append(photoRepresentation)
|
||||||
}
|
}
|
||||||
let channel = TelegramChannel(id: PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(0)), accessHash: .genericPublic(0), title: invite.title, username: nil, photo: photo, creationDate: 0, version: 0, participationStatus: .left, info: .broadcast(TelegramChannelBroadcastInfo(flags: [])), flags: [], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil, usernames: [], storiesHidden: nil, nameColor: invite.nameColor, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, emojiStatus: nil, approximateBoostLevel: nil, subscriptionUntilDate: nil, verificationIconFileId: nil, sendPaidMessageStars: nil, linkedMonoforumId: nil)
|
let channel = TelegramChannel(id: PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(0)), accessHash: .genericPublic(0), title: invite.title, username: nil, photo: photo, creationDate: 0, version: 0, participationStatus: .left, info: .broadcast(TelegramChannelBroadcastInfo(flags: [])), flags: [], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil, usernames: [], storiesHidden: nil, nameColor: invite.nameColor, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, emojiStatus: nil, approximateBoostLevel: nil, subscriptionUntilDate: nil, verificationIconFileId: nil, sendPaidMessageStars: nil, linkedMonoforumId: nil, linkedBotId: nil)
|
||||||
let invoice = TelegramMediaInvoice(title: "", description: "", photo: nil, receiptMessageId: nil, currency: "XTR", totalAmount: subscriptionPricing.amount.value, startParam: "", extendedMedia: nil, subscriptionPeriod: nil, flags: [], version: 0)
|
let invoice = TelegramMediaInvoice(title: "", description: "", photo: nil, receiptMessageId: nil, currency: "XTR", totalAmount: subscriptionPricing.amount.value, startParam: "", extendedMedia: nil, subscriptionPeriod: nil, flags: [], version: 0)
|
||||||
|
|
||||||
inputData.set(.single(BotCheckoutController.InputData(
|
inputData.set(.single(BotCheckoutController.InputData(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user