From 50c5cc96162e3216d6ae112c01af6353e794a6c8 Mon Sep 17 00:00:00 2001 From: Isaac <> Date: Mon, 19 Jan 2026 00:40:53 +0800 Subject: [PATCH] Refactor constructor use sites for types 560-579 to struct pattern Co-Authored-By: Claude Opus 4.5 --- submodules/TelegramApi/Sources/Api38.swift | 76 ++++- submodules/TelegramApi/Sources/Api39.swift | 310 ++++++++++++++++-- .../Sources/Network/Download.swift | 6 +- .../Sources/Network/FetchV2.swift | 12 +- .../Sources/Network/MultipartFetch.swift | 15 +- .../State/AccountStateManagementUtils.swift | 66 ++-- .../Sources/State/AccountStateManager.swift | 3 +- .../Sources/State/ResetState.swift | 3 +- .../State/SynchronizePeerReadState.swift | 3 +- .../TelegramEngine/Calls/GroupCalls.swift | 6 +- .../Messages/EngineStoryViewListContext.swift | 6 +- .../TelegramEngine/Messages/Stories.swift | 21 +- .../Messages/StoryListContext.swift | 31 +- .../Peers/BotRecomendation.swift | 12 +- .../TelegramEngine/Peers/SavedMusic.swift | 12 +- .../Peers/UpdateCachedPeerData.swift | 3 +- .../Stickers/ImportStickers.swift | 4 +- 17 files changed, 483 insertions(+), 106 deletions(-) diff --git a/submodules/TelegramApi/Sources/Api38.swift b/submodules/TelegramApi/Sources/Api38.swift index 7cf94a3f64..6a7243a456 100644 --- a/submodules/TelegramApi/Sources/Api38.swift +++ b/submodules/TelegramApi/Sources/Api38.swift @@ -652,7 +652,13 @@ public extension Api.stats { } public extension Api.stickers { enum SuggestedShortName: TypeConstructorDescription { - case suggestedShortName(shortName: String) + public class Cons_suggestedShortName { + public var shortName: String + public init(shortName: String) { + self.shortName = shortName + } + } + case suggestedShortName(Cons_suggestedShortName) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG @@ -782,7 +788,15 @@ public extension Api.storage { } public extension Api.stories { enum Albums: TypeConstructorDescription { - case albums(hash: Int64, albums: [Api.StoryAlbum]) + public class Cons_albums { + public var hash: Int64 + public var albums: [Api.StoryAlbum] + public init(hash: Int64, albums: [Api.StoryAlbum]) { + self.hash = hash + self.albums = albums + } + } + case albums(Cons_albums) case albumsNotModified public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { @@ -819,8 +833,36 @@ public extension Api.stories { } public extension Api.stories { enum AllStories: TypeConstructorDescription { - case allStories(flags: Int32, count: Int32, state: String, peerStories: [Api.PeerStories], chats: [Api.Chat], users: [Api.User], stealthMode: Api.StoriesStealthMode) - case allStoriesNotModified(flags: Int32, state: String, stealthMode: Api.StoriesStealthMode) + public class Cons_allStories { + public var flags: Int32 + public var count: Int32 + public var state: String + public var peerStories: [Api.PeerStories] + public var chats: [Api.Chat] + public var users: [Api.User] + public var stealthMode: Api.StoriesStealthMode + public init(flags: Int32, count: Int32, state: String, peerStories: [Api.PeerStories], chats: [Api.Chat], users: [Api.User], stealthMode: Api.StoriesStealthMode) { + self.flags = flags + self.count = count + self.state = state + self.peerStories = peerStories + self.chats = chats + self.users = users + self.stealthMode = stealthMode + } + } + public class Cons_allStoriesNotModified { + public var flags: Int32 + public var state: String + public var stealthMode: Api.StoriesStealthMode + public init(flags: Int32, state: String, stealthMode: Api.StoriesStealthMode) { + self.flags = flags + self.state = state + self.stealthMode = stealthMode + } + } + case allStories(Cons_allStories) + case allStoriesNotModified(Cons_allStoriesNotModified) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG @@ -856,7 +898,13 @@ public extension Api.stories { } public extension Api.stories { enum CanSendStoryCount: TypeConstructorDescription { - case canSendStoryCount(countRemains: Int32) + public class Cons_canSendStoryCount { + public var countRemains: Int32 + public init(countRemains: Int32) { + self.countRemains = countRemains + } + } + case canSendStoryCount(Cons_canSendStoryCount) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG @@ -885,7 +933,23 @@ public extension Api.stories { } public extension Api.stories { enum FoundStories: TypeConstructorDescription { - case foundStories(flags: Int32, count: Int32, stories: [Api.FoundStory], nextOffset: String?, chats: [Api.Chat], users: [Api.User]) + public class Cons_foundStories { + public var flags: Int32 + public var count: Int32 + public var stories: [Api.FoundStory] + public var nextOffset: String? + public var chats: [Api.Chat] + public var users: [Api.User] + public init(flags: Int32, count: Int32, stories: [Api.FoundStory], nextOffset: String?, chats: [Api.Chat], users: [Api.User]) { + self.flags = flags + self.count = count + self.stories = stories + self.nextOffset = nextOffset + self.chats = chats + self.users = users + } + } + case foundStories(Cons_foundStories) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG diff --git a/submodules/TelegramApi/Sources/Api39.swift b/submodules/TelegramApi/Sources/Api39.swift index f35be26bf1..0edc01b44f 100644 --- a/submodules/TelegramApi/Sources/Api39.swift +++ b/submodules/TelegramApi/Sources/Api39.swift @@ -1,6 +1,16 @@ public extension Api.stories { enum PeerStories: TypeConstructorDescription { - case peerStories(stories: Api.PeerStories, chats: [Api.Chat], users: [Api.User]) + public class Cons_peerStories { + public var stories: Api.PeerStories + public var chats: [Api.Chat] + public var users: [Api.User] + public init(stories: Api.PeerStories, chats: [Api.Chat], users: [Api.User]) { + self.stories = stories + self.chats = chats + self.users = users + } + } + case peerStories(Cons_peerStories) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG @@ -29,7 +39,23 @@ public extension Api.stories { } public extension Api.stories { enum Stories: TypeConstructorDescription { - case stories(flags: Int32, count: Int32, stories: [Api.StoryItem], pinnedToTop: [Int32]?, chats: [Api.Chat], users: [Api.User]) + public class Cons_stories { + public var flags: Int32 + public var count: Int32 + public var stories: [Api.StoryItem] + public var pinnedToTop: [Int32]? + public var chats: [Api.Chat] + public var users: [Api.User] + public init(flags: Int32, count: Int32, stories: [Api.StoryItem], pinnedToTop: [Int32]?, chats: [Api.Chat], users: [Api.User]) { + self.flags = flags + self.count = count + self.stories = stories + self.pinnedToTop = pinnedToTop + self.chats = chats + self.users = users + } + } + case stories(Cons_stories) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG @@ -58,7 +84,23 @@ public extension Api.stories { } public extension Api.stories { enum StoryReactionsList: TypeConstructorDescription { - case storyReactionsList(flags: Int32, count: Int32, reactions: [Api.StoryReaction], chats: [Api.Chat], users: [Api.User], nextOffset: String?) + public class Cons_storyReactionsList { + public var flags: Int32 + public var count: Int32 + public var reactions: [Api.StoryReaction] + public var chats: [Api.Chat] + public var users: [Api.User] + public var nextOffset: String? + public init(flags: Int32, count: Int32, reactions: [Api.StoryReaction], chats: [Api.Chat], users: [Api.User], nextOffset: String?) { + self.flags = flags + self.count = count + self.reactions = reactions + self.chats = chats + self.users = users + self.nextOffset = nextOffset + } + } + case storyReactionsList(Cons_storyReactionsList) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG @@ -87,7 +129,15 @@ public extension Api.stories { } public extension Api.stories { enum StoryViews: TypeConstructorDescription { - case storyViews(views: [Api.StoryViews], users: [Api.User]) + public class Cons_storyViews { + public var views: [Api.StoryViews] + public var users: [Api.User] + public init(views: [Api.StoryViews], users: [Api.User]) { + self.views = views + self.users = users + } + } + case storyViews(Cons_storyViews) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG @@ -116,7 +166,29 @@ public extension Api.stories { } public extension Api.stories { enum StoryViewsList: TypeConstructorDescription { - case storyViewsList(flags: Int32, count: Int32, viewsCount: Int32, forwardsCount: Int32, reactionsCount: Int32, views: [Api.StoryView], chats: [Api.Chat], users: [Api.User], nextOffset: String?) + public class Cons_storyViewsList { + public var flags: Int32 + public var count: Int32 + public var viewsCount: Int32 + public var forwardsCount: Int32 + public var reactionsCount: Int32 + public var views: [Api.StoryView] + public var chats: [Api.Chat] + public var users: [Api.User] + public var nextOffset: String? + public init(flags: Int32, count: Int32, viewsCount: Int32, forwardsCount: Int32, reactionsCount: Int32, views: [Api.StoryView], chats: [Api.Chat], users: [Api.User], nextOffset: String?) { + self.flags = flags + self.count = count + self.viewsCount = viewsCount + self.forwardsCount = forwardsCount + self.reactionsCount = reactionsCount + self.views = views + self.chats = chats + self.users = users + self.nextOffset = nextOffset + } + } + case storyViewsList(Cons_storyViewsList) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG @@ -145,9 +217,53 @@ public extension Api.stories { } public extension Api.updates { indirect enum ChannelDifference: TypeConstructorDescription { - case channelDifference(flags: Int32, pts: Int32, timeout: Int32?, newMessages: [Api.Message], otherUpdates: [Api.Update], chats: [Api.Chat], users: [Api.User]) - case channelDifferenceEmpty(flags: Int32, pts: Int32, timeout: Int32?) - case channelDifferenceTooLong(flags: Int32, timeout: Int32?, dialog: Api.Dialog, messages: [Api.Message], chats: [Api.Chat], users: [Api.User]) + public class Cons_channelDifference { + public var flags: Int32 + public var pts: Int32 + public var timeout: Int32? + public var newMessages: [Api.Message] + public var otherUpdates: [Api.Update] + public var chats: [Api.Chat] + public var users: [Api.User] + public init(flags: Int32, pts: Int32, timeout: Int32?, newMessages: [Api.Message], otherUpdates: [Api.Update], chats: [Api.Chat], users: [Api.User]) { + self.flags = flags + self.pts = pts + self.timeout = timeout + self.newMessages = newMessages + self.otherUpdates = otherUpdates + self.chats = chats + self.users = users + } + } + public class Cons_channelDifferenceEmpty { + public var flags: Int32 + public var pts: Int32 + public var timeout: Int32? + public init(flags: Int32, pts: Int32, timeout: Int32?) { + self.flags = flags + self.pts = pts + self.timeout = timeout + } + } + public class Cons_channelDifferenceTooLong { + public var flags: Int32 + public var timeout: Int32? + public var dialog: Api.Dialog + public var messages: [Api.Message] + public var chats: [Api.Chat] + public var users: [Api.User] + public init(flags: Int32, timeout: Int32?, dialog: Api.Dialog, messages: [Api.Message], chats: [Api.Chat], users: [Api.User]) { + self.flags = flags + self.timeout = timeout + self.dialog = dialog + self.messages = messages + self.chats = chats + self.users = users + } + } + case channelDifference(Cons_channelDifference) + case channelDifferenceEmpty(Cons_channelDifferenceEmpty) + case channelDifferenceTooLong(Cons_channelDifferenceTooLong) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG @@ -190,10 +306,56 @@ public extension Api.updates { } public extension Api.updates { enum Difference: TypeConstructorDescription { - case difference(newMessages: [Api.Message], newEncryptedMessages: [Api.EncryptedMessage], otherUpdates: [Api.Update], chats: [Api.Chat], users: [Api.User], state: Api.updates.State) - case differenceEmpty(date: Int32, seq: Int32) - case differenceSlice(newMessages: [Api.Message], newEncryptedMessages: [Api.EncryptedMessage], otherUpdates: [Api.Update], chats: [Api.Chat], users: [Api.User], intermediateState: Api.updates.State) - case differenceTooLong(pts: Int32) + public class Cons_difference { + public var newMessages: [Api.Message] + public var newEncryptedMessages: [Api.EncryptedMessage] + public var otherUpdates: [Api.Update] + public var chats: [Api.Chat] + public var users: [Api.User] + public var state: Api.updates.State + public init(newMessages: [Api.Message], newEncryptedMessages: [Api.EncryptedMessage], otherUpdates: [Api.Update], chats: [Api.Chat], users: [Api.User], state: Api.updates.State) { + self.newMessages = newMessages + self.newEncryptedMessages = newEncryptedMessages + self.otherUpdates = otherUpdates + self.chats = chats + self.users = users + self.state = state + } + } + public class Cons_differenceEmpty { + public var date: Int32 + public var seq: Int32 + public init(date: Int32, seq: Int32) { + self.date = date + self.seq = seq + } + } + public class Cons_differenceSlice { + public var newMessages: [Api.Message] + public var newEncryptedMessages: [Api.EncryptedMessage] + public var otherUpdates: [Api.Update] + public var chats: [Api.Chat] + public var users: [Api.User] + public var intermediateState: Api.updates.State + public init(newMessages: [Api.Message], newEncryptedMessages: [Api.EncryptedMessage], otherUpdates: [Api.Update], chats: [Api.Chat], users: [Api.User], intermediateState: Api.updates.State) { + self.newMessages = newMessages + self.newEncryptedMessages = newEncryptedMessages + self.otherUpdates = otherUpdates + self.chats = chats + self.users = users + self.intermediateState = intermediateState + } + } + public class Cons_differenceTooLong { + public var pts: Int32 + public init(pts: Int32) { + self.pts = pts + } + } + case difference(Cons_difference) + case differenceEmpty(Cons_differenceEmpty) + case differenceSlice(Cons_differenceSlice) + case differenceTooLong(Cons_differenceTooLong) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG @@ -243,7 +405,21 @@ public extension Api.updates { } public extension Api.updates { enum State: TypeConstructorDescription { - case state(pts: Int32, qts: Int32, date: Int32, seq: Int32, unreadCount: Int32) + public class Cons_state { + public var pts: Int32 + public var qts: Int32 + public var date: Int32 + public var seq: Int32 + public var unreadCount: Int32 + public init(pts: Int32, qts: Int32, date: Int32, seq: Int32, unreadCount: Int32) { + self.pts = pts + self.qts = qts + self.date = date + self.seq = seq + self.unreadCount = unreadCount + } + } + case state(Cons_state) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG @@ -272,8 +448,20 @@ public extension Api.updates { } public extension Api.upload { enum CdnFile: TypeConstructorDescription { - case cdnFile(bytes: Buffer) - case cdnFileReuploadNeeded(requestToken: Buffer) + public class Cons_cdnFile { + public var bytes: Buffer + public init(bytes: Buffer) { + self.bytes = bytes + } + } + public class Cons_cdnFileReuploadNeeded { + public var requestToken: Buffer + public init(requestToken: Buffer) { + self.requestToken = requestToken + } + } + case cdnFile(Cons_cdnFile) + case cdnFileReuploadNeeded(Cons_cdnFileReuploadNeeded) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG @@ -309,8 +497,32 @@ public extension Api.upload { } public extension Api.upload { enum File: TypeConstructorDescription { - case file(type: Api.storage.FileType, mtime: Int32, bytes: Buffer) - case fileCdnRedirect(dcId: Int32, fileToken: Buffer, encryptionKey: Buffer, encryptionIv: Buffer, fileHashes: [Api.FileHash]) + public class Cons_file { + public var type: Api.storage.FileType + public var mtime: Int32 + public var bytes: Buffer + public init(type: Api.storage.FileType, mtime: Int32, bytes: Buffer) { + self.type = type + self.mtime = mtime + self.bytes = bytes + } + } + public class Cons_fileCdnRedirect { + public var dcId: Int32 + public var fileToken: Buffer + public var encryptionKey: Buffer + public var encryptionIv: Buffer + public var fileHashes: [Api.FileHash] + public init(dcId: Int32, fileToken: Buffer, encryptionKey: Buffer, encryptionIv: Buffer, fileHashes: [Api.FileHash]) { + self.dcId = dcId + self.fileToken = fileToken + self.encryptionKey = encryptionKey + self.encryptionIv = encryptionIv + self.fileHashes = fileHashes + } + } + case file(Cons_file) + case fileCdnRedirect(Cons_fileCdnRedirect) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG @@ -346,7 +558,21 @@ public extension Api.upload { } public extension Api.upload { enum WebFile: TypeConstructorDescription { - case webFile(size: Int32, mimeType: String, fileType: Api.storage.FileType, mtime: Int32, bytes: Buffer) + public class Cons_webFile { + public var size: Int32 + public var mimeType: String + public var fileType: Api.storage.FileType + public var mtime: Int32 + public var bytes: Buffer + public init(size: Int32, mimeType: String, fileType: Api.storage.FileType, mtime: Int32, bytes: Buffer) { + self.size = size + self.mimeType = mimeType + self.fileType = fileType + self.mtime = mtime + self.bytes = bytes + } + } + case webFile(Cons_webFile) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG @@ -375,8 +601,22 @@ public extension Api.upload { } public extension Api.users { enum SavedMusic: TypeConstructorDescription { - case savedMusic(count: Int32, documents: [Api.Document]) - case savedMusicNotModified(count: Int32) + public class Cons_savedMusic { + public var count: Int32 + public var documents: [Api.Document] + public init(count: Int32, documents: [Api.Document]) { + self.count = count + self.documents = documents + } + } + public class Cons_savedMusicNotModified { + public var count: Int32 + public init(count: Int32) { + self.count = count + } + } + case savedMusic(Cons_savedMusic) + case savedMusicNotModified(Cons_savedMusicNotModified) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG @@ -412,7 +652,17 @@ public extension Api.users { } public extension Api.users { enum UserFull: TypeConstructorDescription { - case userFull(fullUser: Api.UserFull, chats: [Api.Chat], users: [Api.User]) + public class Cons_userFull { + public var fullUser: Api.UserFull + public var chats: [Api.Chat] + public var users: [Api.User] + public init(fullUser: Api.UserFull, chats: [Api.Chat], users: [Api.User]) { + self.fullUser = fullUser + self.chats = chats + self.users = users + } + } + case userFull(Cons_userFull) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG @@ -441,8 +691,22 @@ public extension Api.users { } public extension Api.users { enum Users: TypeConstructorDescription { - case users(users: [Api.User]) - case usersSlice(count: Int32, users: [Api.User]) + public class Cons_users { + public var users: [Api.User] + public init(users: [Api.User]) { + self.users = users + } + } + public class Cons_usersSlice { + public var count: Int32 + public var users: [Api.User] + public init(count: Int32, users: [Api.User]) { + self.count = count + self.users = users + } + } + case users(Cons_users) + case usersSlice(Cons_usersSlice) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { #if DEBUG diff --git a/submodules/TelegramCore/Sources/Network/Download.swift b/submodules/TelegramCore/Sources/Network/Download.swift index 7966a99445..ab16e78e7f 100644 --- a/submodules/TelegramCore/Sources/Network/Download.swift +++ b/submodules/TelegramCore/Sources/Network/Download.swift @@ -225,7 +225,8 @@ class Download: NSObject, MTRequestMessageServiceDelegate { } else { if let result = (boxedResponse as! BoxedMessage).body as? Api.upload.WebFile { switch result { - case .webFile(_, _, _, _, let bytes): + case let .webFile(webFileData): + let bytes = webFileData.bytes subscriber.putNext(bytes.makeData()) } subscriber.putCompletion() @@ -278,7 +279,8 @@ class Download: NSObject, MTRequestMessageServiceDelegate { } else { if let result = (boxedResponse as! BoxedMessage).body as? Api.upload.File { switch result { - case let .file(_, _, bytes): + case let .file(fileData): + let bytes = fileData.bytes subscriber.putNext(bytes.makeData()) case .fileCdnRedirect: break diff --git a/submodules/TelegramCore/Sources/Network/FetchV2.swift b/submodules/TelegramCore/Sources/Network/FetchV2.swift index 205eeb5a34..1075a48eb1 100644 --- a/submodules/TelegramCore/Sources/Network/FetchV2.swift +++ b/submodules/TelegramCore/Sources/Network/FetchV2.swift @@ -801,7 +801,8 @@ private final class FetchImpl { ) |> map { result -> FilePartResult in switch result { - case let .cdnFile(bytes): + case let .cdnFile(cdnFileData): + let bytes = cdnFileData.bytes if bytes.size == 0 { return .data(data: Data(), verifyPartHashData: nil) } else { @@ -819,7 +820,8 @@ private final class FetchImpl { verifyPartHashData: VerifyPartHashData(fetchRange: fetchRange, fetchedData: fetchedData) ) } - case let .cdnFileReuploadNeeded(requestToken): + case let .cdnFileReuploadNeeded(cdnFileReuploadNeededData): + let requestToken = cdnFileReuploadNeededData.requestToken return .cdnRefresh(cdnData: cdnData, refreshToken: requestToken.makeData()) } } @@ -858,9 +860,11 @@ private final class FetchImpl { ) |> map { result -> FilePartResult in switch result { - case let .file(_, _, bytes): + case let .file(fileData): + let bytes = fileData.bytes return .data(data: bytes.makeData(), verifyPartHashData: nil) - case let .fileCdnRedirect(dcId, fileToken, encryptionKey, encryptionIv, fileHashes): + case let .fileCdnRedirect(fileCdnRedirectData): + let (dcId, fileToken, encryptionKey, encryptionIv, fileHashes) = (fileCdnRedirectData.dcId, fileCdnRedirectData.fileToken, fileCdnRedirectData.encryptionKey, fileCdnRedirectData.encryptionIv, fileCdnRedirectData.fileHashes) let _ = fileHashes return .cdnRedirect(CdnData( id: Int(dcId), diff --git a/submodules/TelegramCore/Sources/Network/MultipartFetch.swift b/submodules/TelegramCore/Sources/Network/MultipartFetch.swift index 66924f188a..c972fd1b20 100644 --- a/submodules/TelegramCore/Sources/Network/MultipartFetch.swift +++ b/submodules/TelegramCore/Sources/Network/MultipartFetch.swift @@ -362,13 +362,15 @@ private enum MultipartFetchSource { } |> mapToSignal { result, info -> Signal<(Data, NetworkResponseInfo), MultipartFetchDownloadError> in switch result { - case let .file(_, _, bytes): + case let .file(fileData): + let bytes = fileData.bytes var resultData = bytes.makeData() if resultData.count > Int(limit) { resultData.count = Int(limit) } return .single((resultData, info)) - case let .fileCdnRedirect(dcId, fileToken, encryptionKey, encryptionIv, partHashes): + case let .fileCdnRedirect(fileCdnRedirectData): + let (dcId, fileToken, encryptionKey, encryptionIv, partHashes) = (fileCdnRedirectData.dcId, fileCdnRedirectData.fileToken, fileCdnRedirectData.encryptionKey, fileCdnRedirectData.encryptionIv, fileCdnRedirectData.fileHashes) var parsedPartHashes: [Int64: Data] = [:] for part in partHashes { switch part { @@ -397,7 +399,8 @@ private enum MultipartFetchSource { } |> mapToSignal { result, info -> Signal<(Data, NetworkResponseInfo), MultipartFetchDownloadError> in switch result { - case let .webFile(_, _, _, _, bytes): + case let .webFile(webFileData): + let bytes = webFileData.bytes var resultData = bytes.makeData() if resultData.count > Int(limit) { resultData.count = Int(limit) @@ -420,9 +423,11 @@ private enum MultipartFetchSource { } |> mapToSignal { result, info -> Signal<(Data, NetworkResponseInfo), MultipartFetchDownloadError> in switch result { - case let .cdnFileReuploadNeeded(token): + case let .cdnFileReuploadNeeded(cdnFileReuploadNeededData): + let token = cdnFileReuploadNeededData.requestToken return .fail(.reuploadToCdn(masterDatacenterId: masterDatacenterId, token: token.makeData())) - case let .cdnFile(bytes): + case let .cdnFile(cdnFileData): + let bytes = cdnFileData.bytes if bytes.size == 0 { return .single((bytes.makeData(), info)) } else { diff --git a/submodules/TelegramCore/Sources/State/AccountStateManagementUtils.swift b/submodules/TelegramCore/Sources/State/AccountStateManagementUtils.swift index afbb7238a2..2b2fad4980 100644 --- a/submodules/TelegramCore/Sources/State/AccountStateManagementUtils.swift +++ b/submodules/TelegramCore/Sources/State/AccountStateManagementUtils.swift @@ -222,7 +222,8 @@ private func peerIdsFromDifference(_ difference: Api.updates.Difference) -> Set< var peerIds = Set() switch difference { - case let .difference(newMessages, _, otherUpdates, chats, users, _): + case let .difference(differenceData): + let (newMessages, _, otherUpdates, chats, users, _) = (differenceData.newMessages, differenceData.newEncryptedMessages, differenceData.otherUpdates, differenceData.chats, differenceData.users, differenceData.state) for message in newMessages { for peerId in apiMessagePeerIds(message) { peerIds.insert(peerId) @@ -241,7 +242,8 @@ private func peerIdsFromDifference(_ difference: Api.updates.Difference) -> Set< } case .differenceEmpty: break - case let .differenceSlice(newMessages, _, otherUpdates, chats, users, _): + case let .differenceSlice(differenceSliceData): + let (newMessages, _, otherUpdates, chats, users, _) = (differenceSliceData.newMessages, differenceSliceData.newEncryptedMessages, differenceSliceData.otherUpdates, differenceSliceData.chats, differenceSliceData.users, differenceSliceData.intermediateState) for message in newMessages { for peerId in apiMessagePeerIds(message) { peerIds.insert(peerId) @@ -271,11 +273,13 @@ private func activeChannelsFromDifference(_ difference: Api.updates.Difference) var chats: [Api.Chat] = [] switch difference { - case let .difference(_, _, _, differenceChats, _, _): + case let .difference(differenceData): + let (_, _, _, differenceChats, _, _) = (differenceData.newMessages, differenceData.newEncryptedMessages, differenceData.otherUpdates, differenceData.chats, differenceData.users, differenceData.state) chats = differenceChats case .differenceEmpty: break - case let .differenceSlice(_, _, _, differenceChats, _, _): + case let .differenceSlice(differenceSliceData): + let (_, _, _, differenceChats, _, _) = (differenceSliceData.newMessages, differenceSliceData.newEncryptedMessages, differenceSliceData.otherUpdates, differenceSliceData.chats, differenceSliceData.users, differenceSliceData.intermediateState) chats = differenceChats case .differenceTooLong: break @@ -302,7 +306,8 @@ private func associatedMessageIdsFromDifference(_ difference: Api.updates.Differ var generalIds = Set() switch difference { - case let .difference(newMessages, _, otherUpdates, _, _, _): + case let .difference(differenceData): + let (newMessages, _, otherUpdates, _, _, _) = (differenceData.newMessages, differenceData.newEncryptedMessages, differenceData.otherUpdates, differenceData.chats, differenceData.users, differenceData.state) for message in newMessages { if let associatedMessageIds = apiMessageAssociatedMessageIds(message) { replyIds.formUnion(associatedMessageIds.replyIds) @@ -317,14 +322,15 @@ private func associatedMessageIdsFromDifference(_ difference: Api.updates.Differ } case .differenceEmpty: break - case let .differenceSlice(newMessages, _, otherUpdates, _, _, _): + case let .differenceSlice(differenceSliceData): + let (newMessages, _, otherUpdates, _, _, _) = (differenceSliceData.newMessages, differenceSliceData.newEncryptedMessages, differenceSliceData.otherUpdates, differenceSliceData.chats, differenceSliceData.users, differenceSliceData.intermediateState) for message in newMessages { if let associatedMessageIds = apiMessageAssociatedMessageIds(message) { replyIds.formUnion(associatedMessageIds.replyIds) generalIds.formUnion(associatedMessageIds.generalIds) } } - + for update in otherUpdates { if let associatedMessageIds = update.associatedMessageIds { replyIds.formUnion(associatedMessageIds.replyIds) @@ -334,7 +340,7 @@ private func associatedMessageIdsFromDifference(_ difference: Api.updates.Differ case .differenceTooLong: break } - + return (replyIds, generalIds) } @@ -342,7 +348,8 @@ private func peerIdsRequiringLocalChatStateFromDifference(_ difference: Api.upda var peerIds = Set() switch difference { - case let .difference(newMessages, _, otherUpdates, _, _, _): + case let .difference(differenceData): + let (newMessages, _, otherUpdates, _, _, _) = (differenceData.newMessages, differenceData.newEncryptedMessages, differenceData.otherUpdates, differenceData.chats, differenceData.users, differenceData.state) for message in newMessages { if let messageId = message.id() { peerIds.insert(messageId.peerId) @@ -367,13 +374,14 @@ private func peerIdsRequiringLocalChatStateFromDifference(_ difference: Api.upda } case .differenceEmpty: break - case let .differenceSlice(newMessages, _, otherUpdates, _, _, _): + case let .differenceSlice(differenceSliceData): + let (newMessages, _, otherUpdates, _, _, _) = (differenceSliceData.newMessages, differenceSliceData.newEncryptedMessages, differenceSliceData.otherUpdates, differenceSliceData.chats, differenceSliceData.users, differenceSliceData.intermediateState) for message in newMessages { if let messageId = message.id() { peerIds.insert(messageId.peerId) } } - + peerIds.formUnion(peerIdsRequiringLocalChatStateFromUpdates(otherUpdates)) for update in otherUpdates { if let messageId = update.messageId { @@ -403,11 +411,13 @@ private func locallyGeneratedMessageTimestampsFromDifference(_ difference: Api.u var otherUpdates: [Api.Update]? switch difference { - case let .difference(_, _, apiOtherUpdates, _, _, _): + case let .difference(differenceData): + let (_, _, apiOtherUpdates, _, _, _) = (differenceData.newMessages, differenceData.newEncryptedMessages, differenceData.otherUpdates, differenceData.chats, differenceData.users, differenceData.state) otherUpdates = apiOtherUpdates case .differenceEmpty: break - case let .differenceSlice(_, _, apiOtherUpdates, _, _, _): + case let .differenceSlice(differenceSliceData): + let (_, _, apiOtherUpdates, _, _, _) = (differenceSliceData.newMessages, differenceSliceData.newEncryptedMessages, differenceSliceData.otherUpdates, differenceSliceData.chats, differenceSliceData.users, differenceSliceData.intermediateState) otherUpdates = apiOtherUpdates case .differenceTooLong: break @@ -690,26 +700,31 @@ func finalStateWithDifference(accountPeerId: PeerId, postbox: Postbox, network: var users: [Api.User] = [] switch difference { - case let .difference(newMessages, newEncryptedMessages, otherUpdates, apiChats, apiUsers, apiState): + case let .difference(differenceData): + let (newMessages, newEncryptedMessages, otherUpdates, apiChats, apiUsers, apiState) = (differenceData.newMessages, differenceData.newEncryptedMessages, differenceData.otherUpdates, differenceData.chats, differenceData.users, differenceData.state) messages = newMessages encryptedMessages = newEncryptedMessages updates = otherUpdates chats = apiChats users = apiUsers switch apiState { - case let .state(pts, qts, date, seq, _): + case let .state(stateData): + let (pts, qts, date, seq, _) = (stateData.pts, stateData.qts, stateData.date, stateData.seq, stateData.unreadCount) updatedState.updateState(AuthorizedAccountState.State(pts: pts, qts: qts, date: date, seq: seq)) } - case let .differenceEmpty(date, seq): + case let .differenceEmpty(differenceEmptyData): + let (date, seq) = (differenceEmptyData.date, differenceEmptyData.seq) updatedState.updateState(AuthorizedAccountState.State(pts: updatedState.state.pts, qts: updatedState.state.qts, date: date, seq: seq)) - case let .differenceSlice(newMessages, newEncryptedMessages, otherUpdates, apiChats, apiUsers, apiState): + case let .differenceSlice(differenceSliceData): + let (newMessages, newEncryptedMessages, otherUpdates, apiChats, apiUsers, apiState) = (differenceSliceData.newMessages, differenceSliceData.newEncryptedMessages, differenceSliceData.otherUpdates, differenceSliceData.chats, differenceSliceData.users, differenceSliceData.intermediateState) messages = newMessages encryptedMessages = newEncryptedMessages updates = otherUpdates chats = apiChats users = apiUsers switch apiState { - case let .state(pts, qts, date, seq, _): + case let .state(stateData): + let (pts, qts, date, seq, _) = (stateData.pts, stateData.qts, stateData.date, stateData.seq, stateData.unreadCount) updatedState.updateState(AuthorizedAccountState.State(pts: pts, qts: qts, date: date, seq: seq)) } case .differenceTooLong: @@ -3391,7 +3406,8 @@ private func pollChannel(accountPeerId: PeerId, postbox: Postbox, network: Netwo } switch difference { - case let .channelDifference(_, pts, timeout, newMessages, otherUpdates, chats, users): + case let .channelDifference(channelDifferenceData): + let (_, pts, timeout, newMessages, otherUpdates, chats, users) = (channelDifferenceData.flags, channelDifferenceData.pts, channelDifferenceData.timeout, channelDifferenceData.newMessages, channelDifferenceData.otherUpdates, channelDifferenceData.chats, channelDifferenceData.users) var updatedState = state var apiTimeout: Int32? @@ -3535,12 +3551,13 @@ private func pollChannel(accountPeerId: PeerId, postbox: Postbox, network: Netwo return (updatedState, true, apiTimeout) } } - case let .channelDifferenceEmpty(_, pts, timeout): + case let .channelDifferenceEmpty(channelDifferenceEmptyData): + let (_, pts, timeout) = (channelDifferenceEmptyData.flags, channelDifferenceEmptyData.pts, channelDifferenceEmptyData.timeout) var updatedState = state var apiTimeout: Int32? - + apiTimeout = timeout - + let channelPts: Int32 if let _ = updatedState.channelStates[peer.id] { channelPts = pts @@ -3548,9 +3565,10 @@ private func pollChannel(accountPeerId: PeerId, postbox: Postbox, network: Netwo channelPts = pts } updatedState.updateChannelState(peer.id, pts: channelPts) - + return .single((updatedState, true, apiTimeout)) - case let .channelDifferenceTooLong(_, timeout, dialog, messages, chats, users): + case let .channelDifferenceTooLong(channelDifferenceTooLongData): + let (_, timeout, dialog, messages, chats, users) = (channelDifferenceTooLongData.flags, channelDifferenceTooLongData.timeout, channelDifferenceTooLongData.dialog, channelDifferenceTooLongData.messages, channelDifferenceTooLongData.chats, channelDifferenceTooLongData.users) var updatedState = state var apiTimeout: Int32? diff --git a/submodules/TelegramCore/Sources/State/AccountStateManager.swift b/submodules/TelegramCore/Sources/State/AccountStateManager.swift index 3ec9ac44e4..eea995bc40 100644 --- a/submodules/TelegramCore/Sources/State/AccountStateManager.swift +++ b/submodules/TelegramCore/Sources/State/AccountStateManager.swift @@ -925,7 +925,8 @@ public final class AccountStateManager { return postbox.transaction { transaction -> (difference: Api.updates.Difference?, finalStatte: AccountReplayedFinalState?, skipBecauseOfError: Bool, resetState: Bool) in if let currentState = transaction.getState() as? AuthorizedAccountState { switch state { - case let .state(pts, qts, date, seq, _): + case let .state(stateData): + let (pts, qts, date, seq) = (stateData.pts, stateData.qts, stateData.date, stateData.seq) transaction.setState(currentState.changedState(AuthorizedAccountState.State(pts: pts, qts: qts, date: date, seq: seq))) } } diff --git a/submodules/TelegramCore/Sources/State/ResetState.swift b/submodules/TelegramCore/Sources/State/ResetState.swift index c46e2b9f69..58176e95f9 100644 --- a/submodules/TelegramCore/Sources/State/ResetState.swift +++ b/submodules/TelegramCore/Sources/State/ResetState.swift @@ -147,7 +147,8 @@ func _internal_resetAccountState(postbox: Postbox, network: Network, accountPeer if let currentState = transaction.getState() as? AuthorizedAccountState { switch state { - case let .state(pts, qts, date, seq, _): + case let .state(stateData): + let (pts, qts, date, seq) = (stateData.pts, stateData.qts, stateData.date, stateData.seq) transaction.setState(currentState.changedState(AuthorizedAccountState.State(pts: pts, qts: qts, date: date, seq: seq))) } } diff --git a/submodules/TelegramCore/Sources/State/SynchronizePeerReadState.swift b/submodules/TelegramCore/Sources/State/SynchronizePeerReadState.swift index 66e7fd1231..042e29ed0b 100644 --- a/submodules/TelegramCore/Sources/State/SynchronizePeerReadState.swift +++ b/submodules/TelegramCore/Sources/State/SynchronizePeerReadState.swift @@ -112,7 +112,8 @@ private func dialogReadState(network: Network, postbox: Postbox, peerId: PeerId) } else { let pts: Int32 switch state { - case let .state(statePts, _, _, _, _): + case let .state(stateData): + let (statePts) = (stateData.pts) pts = statePts } diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Calls/GroupCalls.swift b/submodules/TelegramCore/Sources/TelegramEngine/Calls/GroupCalls.swift index 7f9c1e88e8..005f450a05 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Calls/GroupCalls.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Calls/GroupCalls.swift @@ -3131,7 +3131,8 @@ func _internal_getAudioBroadcastPart(dataSource: AudioBroadcastDataSource, callI return dataSource.download.requestWithAdditionalData(Api.functions.upload.getFile(flags: 0, location: .inputGroupCallStream(.init(flags: 0, call: .inputGroupCall(.init(id: callId, accessHash: accessHash)), timeMs: timestampIdMilliseconds, scale: scale, videoChannel: nil, videoQuality: nil)), offset: 0, limit: 128 * 1024), automaticFloodWait: false, failOnServerErrors: true) |> map { result, responseTimestamp -> GetAudioBroadcastPartResult in switch result { - case let .file(_, _, bytes): + case let .file(fileData): + let (bytes) = (fileData.bytes) return GetAudioBroadcastPartResult( status: .data(bytes.makeData()), responseTimestamp: responseTimestamp @@ -3184,7 +3185,8 @@ func _internal_getVideoBroadcastPart(dataSource: AudioBroadcastDataSource, callI return dataSource.download.requestWithAdditionalData(Api.functions.upload.getFile(flags: 0, location: .inputGroupCallStream(.init(flags: 1 << 0, call: .inputGroupCall(.init(id: callId, accessHash: accessHash)), timeMs: timestampIdMilliseconds, scale: scale, videoChannel: channelId, videoQuality: quality)), offset: 0, limit: 512 * 1024), automaticFloodWait: false, failOnServerErrors: true) |> map { result, responseTimestamp -> GetAudioBroadcastPartResult in switch result { - case let .file(_, _, bytes): + case let .file(fileData): + let (bytes) = (fileData.bytes) return GetAudioBroadcastPartResult( status: .data(bytes.makeData()), responseTimestamp: responseTimestamp diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Messages/EngineStoryViewListContext.swift b/submodules/TelegramCore/Sources/TelegramEngine/Messages/EngineStoryViewListContext.swift index 7efb0867a9..b54e699ff8 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Messages/EngineStoryViewListContext.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Messages/EngineStoryViewListContext.swift @@ -465,7 +465,8 @@ public final class EngineStoryViewListContext { |> mapToSignal { result -> Signal in return account.postbox.transaction { transaction -> InternalState in switch result { - case let .storyViewsList(_, count, viewsCount, forwardsCount, reactionsCount, views, chats, users, nextOffset): + case let .storyViewsList(storyViewsListData): + let (count, viewsCount, forwardsCount, reactionsCount, views, chats, users, nextOffset) = (storyViewsListData.count, storyViewsListData.viewsCount, storyViewsListData.forwardsCount, storyViewsListData.reactionsCount, storyViewsListData.views, storyViewsListData.chats, storyViewsListData.users, storyViewsListData.nextOffset) let peers = AccumulatedPeers(chats: chats, users: users) updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: peers) @@ -688,7 +689,8 @@ public final class EngineStoryViewListContext { |> mapToSignal { result -> Signal in return account.postbox.transaction { transaction -> InternalState in switch result { - case let .storyReactionsList(_, count, reactions, chats, users, nextOffset): + case let .storyReactionsList(storyReactionsListData): + let (count, reactions, chats, users, nextOffset) = (storyReactionsListData.count, storyReactionsListData.reactions, storyReactionsListData.chats, storyReactionsListData.users, storyReactionsListData.nextOffset) let peers = AccumulatedPeers(chats: chats, users: users) updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: peers) diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Messages/Stories.swift b/submodules/TelegramCore/Sources/TelegramEngine/Messages/Stories.swift index 1426cec2d7..158a8a12c0 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Messages/Stories.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Messages/Stories.swift @@ -1927,7 +1927,8 @@ func _internal_checkStoriesUploadAvailability(account: Account, target: Stories. return account.network.request(Api.functions.stories.canSendStory(peer: inputPeer)) |> map { result -> StoriesUploadAvailability in switch result { - case let .canSendStoryCount(countRemains): + case let .canSendStoryCount(canSendStoryCountData): + let countRemains = canSendStoryCountData.countRemains return .available(remainingCount: countRemains) } } @@ -2381,9 +2382,10 @@ func _internal_getStoryById(accountPeerId: PeerId, postbox: Postbox, network: Ne } return postbox.transaction { transaction -> EngineStoryItem? in switch result { - case let .stories(_, _, stories, _, chats, users): + case let .stories(storiesData): + let (stories, chats, users) = (storiesData.stories, storiesData.chats, storiesData.users) updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: AccumulatedPeers(transaction: transaction, chats: chats, users: users)) - + if let storyItem = stories.first.flatMap({ Stories.StoredItem(apiStoryItem: $0, peerId: peerId, transaction: transaction) }) { if let entry = CodableEntry(storyItem) { transaction.setStory(id: storyId, value: entry) @@ -2449,9 +2451,10 @@ func _internal_getStoriesById(accountPeerId: PeerId, postbox: Postbox, network: } return postbox.transaction { transaction -> [Stories.StoredItem] in switch result { - case let .stories(_, _, stories, _, chats, users): + case let .stories(storiesData): + let (stories, chats, users) = (storiesData.stories, storiesData.chats, storiesData.users) updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: AccumulatedPeers(transaction: transaction, chats: chats, users: users)) - + return stories.compactMap { apiStoryItem -> Stories.StoredItem? in return Stories.StoredItem(apiStoryItem: apiStoryItem, peerId: peer.id, transaction: transaction) } @@ -2480,9 +2483,10 @@ func _internal_getStoriesById(accountPeerId: PeerId, postbox: Postbox, source: F } return postbox.transaction { transaction -> [Stories.StoredItem]? in switch result { - case let .stories(_, _, stories, _, chats, users): + case let .stories(storiesData): + let (stories, chats, users) = (storiesData.stories, storiesData.chats, storiesData.users) updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: AccumulatedPeers(transaction: transaction, chats: chats, users: users)) - + return stories.compactMap { apiStoryItem -> Stories.StoredItem? in return Stories.StoredItem(apiStoryItem: apiStoryItem, peerId: peerId, transaction: transaction) } @@ -2536,7 +2540,8 @@ func _internal_getStoryViews(account: Account, peerId: PeerId, ids: [Int32]) -> return account.postbox.transaction { transaction -> [Int32: Stories.Item.Views] in var parsedViews: [Int32: Stories.Item.Views] = [:] switch result { - case let .storyViews(views, users): + case let .storyViews(storyViewsData): + let (views, users) = (storyViewsData.views, storyViewsData.users) updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: AccumulatedPeers(users: users)) for i in 0 ..< views.count { diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Messages/StoryListContext.swift b/submodules/TelegramCore/Sources/TelegramEngine/Messages/StoryListContext.swift index 8c960f8eff..b8ad57ef3a 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Messages/StoryListContext.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Messages/StoryListContext.swift @@ -402,7 +402,8 @@ public final class StorySubscriptionsContext { let _ = (self.postbox.transaction { transaction -> Void in var updatedStealthMode: Api.StoriesStealthMode? switch result { - case let .allStoriesNotModified(_, state, stealthMode): + case let .allStoriesNotModified(allStoriesNotModifiedData): + let (state, stealthMode) = (allStoriesNotModifiedData.state, allStoriesNotModifiedData.stealthMode) self.loadedStateMark = .value(state) let (currentStateValue, _) = transaction.getAllStorySubscriptions(key: subscriptionsKey) let currentState = currentStateValue.flatMap { $0.get(Stories.SubscriptionsState.self) } @@ -421,7 +422,8 @@ public final class StorySubscriptionsContext { if isRefresh && !isHidden { updatedStealthMode = stealthMode } - case let .allStories(flags, _, state, peerStories, chats, users, stealthMode): + case let .allStories(allStoriesData): + let (flags, state, peerStories, chats, users, stealthMode) = (allStoriesData.flags, allStoriesData.state, allStoriesData.peerStories, allStoriesData.chats, allStoriesData.users, allStoriesData.stealthMode) let parsedPeers = AccumulatedPeers(transaction: transaction, chats: chats, users: users) let hasMore: Bool = (flags & (1 << 0)) != 0 @@ -890,7 +892,8 @@ public final class PeerStoryListContext: StoryListContext { if let updatedFolders { switch updatedFolders { - case let .albums(_, albums): + case let .albums(albumsData): + let albums = albumsData.albums for album in albums { switch album { case let .storyAlbum(storyAlbumData): @@ -917,7 +920,8 @@ public final class PeerStoryListContext: StoryListContext { } switch result { - case let .stories(_, count, stories, pinnedStories, chats, users): + case let .stories(storiesData): + let (count, stories, pinnedStories, chats, users) = (storiesData.count, storiesData.stories, storiesData.pinnedToTop, storiesData.chats, storiesData.users) totalCount = Int(count) hasMore = stories.count >= limit @@ -2150,7 +2154,8 @@ public final class SearchStoryListContext: StoryListContext { var nextOffsetValue: String? switch result { - case let .foundStories(_, count, stories, nextOffset, chats, users): + case let .foundStories(foundStoriesData): + let (count, stories, nextOffset, chats, users) = (foundStoriesData.count, foundStoriesData.stories, foundStoriesData.nextOffset, foundStoriesData.chats, foundStoriesData.users) updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: AccumulatedPeers(transaction: transaction, chats: chats, users: users)) totalCount = Int(count) @@ -2598,9 +2603,10 @@ public final class PeerExpiringStoryListContext { var updatedPeerEntries: [StoryItemsTableEntry] = [] updatedPeerEntries.removeAll() - if let result = result, case let .peerStories(stories, chats, users) = result { + if let result = result, case let .peerStories(peerStoriesData) = result { + let (stories, chats, users) = (peerStoriesData.stories, peerStoriesData.chats, peerStoriesData.users) let parsedPeers = AccumulatedPeers(transaction: transaction, chats: chats, users: users) - + switch stories { case let .peerStories(peerStoriesData): let (_, peerIdValue, maxReadId, stories) = (peerStoriesData.flags, peerStoriesData.peer, peerStoriesData.maxReadId, peerStoriesData.stories) @@ -2627,7 +2633,7 @@ public final class PeerExpiringStoryListContext { updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: parsedPeers) } - + transaction.setStoryItems(peerId: peerId, items: updatedPeerEntries) } |> ignoreValues @@ -2780,9 +2786,10 @@ public func _internal_pollPeerStories(postbox: Postbox, network: Network, accoun var updatedPeerEntries: [StoryItemsTableEntry] = [] updatedPeerEntries.removeAll() - if let result = result, case let .peerStories(stories, chats, users) = result { + if let result = result, case let .peerStories(peerStoriesData) = result { + let (stories, chats, users) = (peerStoriesData.stories, peerStoriesData.chats, peerStoriesData.users) let parsedPeers = AccumulatedPeers(transaction: transaction, chats: chats, users: users) - + switch stories { case let .peerStories(peerStoriesData): let (_, peerIdValue, maxReadId, stories) = (peerStoriesData.flags, peerStoriesData.peer, peerStoriesData.maxReadId, peerStoriesData.stories) @@ -2809,9 +2816,9 @@ public func _internal_pollPeerStories(postbox: Postbox, network: Network, accoun updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: parsedPeers) } - + transaction.setStoryItems(peerId: peerId, items: updatedPeerEntries) - + var isContactOrMember = false if transaction.isPeerContact(peerId: peerId) { isContactOrMember = true diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Peers/BotRecomendation.swift b/submodules/TelegramCore/Sources/TelegramEngine/Peers/BotRecomendation.swift index 2f7d3681cb..000e81af30 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Peers/BotRecomendation.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Peers/BotRecomendation.swift @@ -65,12 +65,12 @@ func _internal_requestRecommendedBots(account: Account, peerId: EnginePeer.Id, f let parsedPeers: AccumulatedPeers var count: Int32 switch result { - case let .users(apiUsers): - users = apiUsers - count = Int32(apiUsers.count) - case let .usersSlice(apiCount, apiUsers): - users = apiUsers - count = apiCount + case let .users(usersData): + users = usersData.users + count = Int32(usersData.users.count) + case let .usersSlice(usersSliceData): + users = usersSliceData.users + count = usersSliceData.count } parsedPeers = AccumulatedPeers(users: users) updatePeers(transaction: transaction, accountPeerId: account.peerId, peers: parsedPeers) diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Peers/SavedMusic.swift b/submodules/TelegramCore/Sources/TelegramEngine/Peers/SavedMusic.swift index edd63193a3..c1d6b785d7 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Peers/SavedMusic.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Peers/SavedMusic.swift @@ -62,8 +62,8 @@ func _internal_getSavedMusicById(postbox: Postbox, network: Network, peer: PeerR |> map { result -> TelegramMediaFile? in if let result { switch result { - case let .savedMusic(_, documents): - if let file = documents.first.flatMap({ telegramMediaFileFromApiDocument($0, altDocuments: nil) }) { + case let .savedMusic(savedMusicData): + if let file = savedMusicData.documents.first.flatMap({ telegramMediaFileFromApiDocument($0, altDocuments: nil) }) { return file } default: @@ -366,10 +366,10 @@ public final class ProfileSavedMusicContext { return network.request(Api.functions.users.getSavedMusic(id: inputUser, offset: offset, limit: 32, hash: 0)) |> map { result -> ([TelegramMediaFile], Int32) in switch result { - case let .savedMusic(count, documents): - return (documents.compactMap { telegramMediaFileFromApiDocument($0, altDocuments: nil) }, count) - case let .savedMusicNotModified(count): - return ([], count) + case let .savedMusic(savedMusicData): + return (savedMusicData.documents.compactMap { telegramMediaFileFromApiDocument($0, altDocuments: nil) }, savedMusicData.count) + case let .savedMusicNotModified(savedMusicNotModifiedData): + return ([], savedMusicNotModifiedData.count) } } } diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Peers/UpdateCachedPeerData.swift b/submodules/TelegramCore/Sources/TelegramEngine/Peers/UpdateCachedPeerData.swift index eafa48b12f..7e9292da48 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Peers/UpdateCachedPeerData.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Peers/UpdateCachedPeerData.swift @@ -236,7 +236,8 @@ func _internal_fetchAndUpdateCachedPeerData(accountPeerId: PeerId, peerId rawPee |> mapToSignal { result, editableBotInfo, botPreview, additionalConnectedBots -> Signal in return postbox.transaction { transaction -> Bool in switch result { - case let .userFull(fullUser, chats, users): + case let .userFull(userFullData): + let (fullUser, chats, users) = (userFullData.fullUser, userFullData.chats, userFullData.users) var accountUser: Api.User? var parsedPeers = AccumulatedPeers(transaction: transaction, chats: chats, users: users) for user in users { diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Stickers/ImportStickers.swift b/submodules/TelegramCore/Sources/TelegramEngine/Stickers/ImportStickers.swift index fd43f4f5e4..ca0da2cf99 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Stickers/ImportStickers.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Stickers/ImportStickers.swift @@ -677,8 +677,8 @@ func _internal_getStickerSetShortNameSuggestion(account: Account, title: String) return nil } switch result { - case let .suggestedShortName(shortName): - return shortName + case let .suggestedShortName(suggestedShortNameData): + return suggestedShortNameData.shortName } } }