Refactor constructor use sites for types 560-579 to struct pattern

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Isaac 2026-01-19 00:40:53 +08:00
parent bb7e1ae300
commit 50c5cc9616
17 changed files with 483 additions and 106 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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),

View file

@ -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 {

View file

@ -222,7 +222,8 @@ private func peerIdsFromDifference(_ difference: Api.updates.Difference) -> Set<
var peerIds = Set<PeerId>()
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<MessageId>()
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<PeerId>()
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?

View file

@ -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)))
}
}

View file

@ -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)))
}
}

View file

@ -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
}

View file

@ -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

View file

@ -465,7 +465,8 @@ public final class EngineStoryViewListContext {
|> mapToSignal { result -> Signal<InternalState, NoError> 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<InternalState, NoError> 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)

View file

@ -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 {

View file

@ -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

View file

@ -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)

View file

@ -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)
}
}
}

View file

@ -236,7 +236,8 @@ func _internal_fetchAndUpdateCachedPeerData(accountPeerId: PeerId, peerId rawPee
|> mapToSignal { result, editableBotInfo, botPreview, additionalConnectedBots -> Signal<Bool, NoError> 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 {

View file

@ -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
}
}
}