Refactor constructor use sites for types 540-559 to struct pattern

Migrated Api.phone.*, Api.photos.*, Api.stats.*, Api.premium.* constructors
to use struct-wrapped enum pattern with --struct-count=560.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Isaac 2026-01-19 00:28:21 +08:00
parent 64d8fe6ba0
commit bb7e1ae300
11 changed files with 382 additions and 52 deletions

View file

@ -957,7 +957,13 @@ public extension Api.payments {
}
public extension Api.phone {
enum ExportedGroupCallInvite: TypeConstructorDescription {
case exportedGroupCallInvite(link: String)
public class Cons_exportedGroupCallInvite {
public var link: String
public init(link: String) {
self.link = link
}
}
case exportedGroupCallInvite(Cons_exportedGroupCallInvite)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -986,7 +992,21 @@ public extension Api.phone {
}
public extension Api.phone {
enum GroupCall: TypeConstructorDescription {
case groupCall(call: Api.GroupCall, participants: [Api.GroupCallParticipant], participantsNextOffset: String, chats: [Api.Chat], users: [Api.User])
public class Cons_groupCall {
public var call: Api.GroupCall
public var participants: [Api.GroupCallParticipant]
public var participantsNextOffset: String
public var chats: [Api.Chat]
public var users: [Api.User]
public init(call: Api.GroupCall, participants: [Api.GroupCallParticipant], participantsNextOffset: String, chats: [Api.Chat], users: [Api.User]) {
self.call = call
self.participants = participants
self.participantsNextOffset = participantsNextOffset
self.chats = chats
self.users = users
}
}
case groupCall(Cons_groupCall)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -1015,7 +1035,19 @@ public extension Api.phone {
}
public extension Api.phone {
enum GroupCallStars: TypeConstructorDescription {
case groupCallStars(totalStars: Int64, topDonors: [Api.GroupCallDonor], chats: [Api.Chat], users: [Api.User])
public class Cons_groupCallStars {
public var totalStars: Int64
public var topDonors: [Api.GroupCallDonor]
public var chats: [Api.Chat]
public var users: [Api.User]
public init(totalStars: Int64, topDonors: [Api.GroupCallDonor], chats: [Api.Chat], users: [Api.User]) {
self.totalStars = totalStars
self.topDonors = topDonors
self.chats = chats
self.users = users
}
}
case groupCallStars(Cons_groupCallStars)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -1044,7 +1076,13 @@ public extension Api.phone {
}
public extension Api.phone {
enum GroupCallStreamChannels: TypeConstructorDescription {
case groupCallStreamChannels(channels: [Api.GroupCallStreamChannel])
public class Cons_groupCallStreamChannels {
public var channels: [Api.GroupCallStreamChannel]
public init(channels: [Api.GroupCallStreamChannel]) {
self.channels = channels
}
}
case groupCallStreamChannels(Cons_groupCallStreamChannels)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -1073,7 +1111,15 @@ public extension Api.phone {
}
public extension Api.phone {
enum GroupCallStreamRtmpUrl: TypeConstructorDescription {
case groupCallStreamRtmpUrl(url: String, key: String)
public class Cons_groupCallStreamRtmpUrl {
public var url: String
public var key: String
public init(url: String, key: String) {
self.url = url
self.key = key
}
}
case groupCallStreamRtmpUrl(Cons_groupCallStreamRtmpUrl)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -1102,7 +1148,23 @@ public extension Api.phone {
}
public extension Api.phone {
enum GroupParticipants: TypeConstructorDescription {
case groupParticipants(count: Int32, participants: [Api.GroupCallParticipant], nextOffset: String, chats: [Api.Chat], users: [Api.User], version: Int32)
public class Cons_groupParticipants {
public var count: Int32
public var participants: [Api.GroupCallParticipant]
public var nextOffset: String
public var chats: [Api.Chat]
public var users: [Api.User]
public var version: Int32
public init(count: Int32, participants: [Api.GroupCallParticipant], nextOffset: String, chats: [Api.Chat], users: [Api.User], version: Int32) {
self.count = count
self.participants = participants
self.nextOffset = nextOffset
self.chats = chats
self.users = users
self.version = version
}
}
case groupParticipants(Cons_groupParticipants)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG

View file

@ -1,6 +1,16 @@
public extension Api.phone {
enum JoinAsPeers: TypeConstructorDescription {
case joinAsPeers(peers: [Api.Peer], chats: [Api.Chat], users: [Api.User])
public class Cons_joinAsPeers {
public var peers: [Api.Peer]
public var chats: [Api.Chat]
public var users: [Api.User]
public init(peers: [Api.Peer], chats: [Api.Chat], users: [Api.User]) {
self.peers = peers
self.chats = chats
self.users = users
}
}
case joinAsPeers(Cons_joinAsPeers)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -29,7 +39,15 @@ public extension Api.phone {
}
public extension Api.phone {
enum PhoneCall: TypeConstructorDescription {
case phoneCall(phoneCall: Api.PhoneCall, users: [Api.User])
public class Cons_phoneCall {
public var phoneCall: Api.PhoneCall
public var users: [Api.User]
public init(phoneCall: Api.PhoneCall, users: [Api.User]) {
self.phoneCall = phoneCall
self.users = users
}
}
case phoneCall(Cons_phoneCall)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -58,7 +76,15 @@ public extension Api.phone {
}
public extension Api.photos {
enum Photo: TypeConstructorDescription {
case photo(photo: Api.Photo, users: [Api.User])
public class Cons_photo {
public var photo: Api.Photo
public var users: [Api.User]
public init(photo: Api.Photo, users: [Api.User]) {
self.photo = photo
self.users = users
}
}
case photo(Cons_photo)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -87,8 +113,26 @@ public extension Api.photos {
}
public extension Api.photos {
enum Photos: TypeConstructorDescription {
case photos(photos: [Api.Photo], users: [Api.User])
case photosSlice(count: Int32, photos: [Api.Photo], users: [Api.User])
public class Cons_photos {
public var photos: [Api.Photo]
public var users: [Api.User]
public init(photos: [Api.Photo], users: [Api.User]) {
self.photos = photos
self.users = users
}
}
public class Cons_photosSlice {
public var count: Int32
public var photos: [Api.Photo]
public var users: [Api.User]
public init(count: Int32, photos: [Api.Photo], users: [Api.User]) {
self.count = count
self.photos = photos
self.users = users
}
}
case photos(Cons_photos)
case photosSlice(Cons_photosSlice)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -124,7 +168,21 @@ public extension Api.photos {
}
public extension Api.premium {
enum BoostsList: TypeConstructorDescription {
case boostsList(flags: Int32, count: Int32, boosts: [Api.Boost], nextOffset: String?, users: [Api.User])
public class Cons_boostsList {
public var flags: Int32
public var count: Int32
public var boosts: [Api.Boost]
public var nextOffset: String?
public var users: [Api.User]
public init(flags: Int32, count: Int32, boosts: [Api.Boost], nextOffset: String?, users: [Api.User]) {
self.flags = flags
self.count = count
self.boosts = boosts
self.nextOffset = nextOffset
self.users = users
}
}
case boostsList(Cons_boostsList)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -153,7 +211,31 @@ public extension Api.premium {
}
public extension Api.premium {
enum BoostsStatus: TypeConstructorDescription {
case boostsStatus(flags: Int32, level: Int32, currentLevelBoosts: Int32, boosts: Int32, giftBoosts: Int32?, nextLevelBoosts: Int32?, premiumAudience: Api.StatsPercentValue?, boostUrl: String, prepaidGiveaways: [Api.PrepaidGiveaway]?, myBoostSlots: [Int32]?)
public class Cons_boostsStatus {
public var flags: Int32
public var level: Int32
public var currentLevelBoosts: Int32
public var boosts: Int32
public var giftBoosts: Int32?
public var nextLevelBoosts: Int32?
public var premiumAudience: Api.StatsPercentValue?
public var boostUrl: String
public var prepaidGiveaways: [Api.PrepaidGiveaway]?
public var myBoostSlots: [Int32]?
public init(flags: Int32, level: Int32, currentLevelBoosts: Int32, boosts: Int32, giftBoosts: Int32?, nextLevelBoosts: Int32?, premiumAudience: Api.StatsPercentValue?, boostUrl: String, prepaidGiveaways: [Api.PrepaidGiveaway]?, myBoostSlots: [Int32]?) {
self.flags = flags
self.level = level
self.currentLevelBoosts = currentLevelBoosts
self.boosts = boosts
self.giftBoosts = giftBoosts
self.nextLevelBoosts = nextLevelBoosts
self.premiumAudience = premiumAudience
self.boostUrl = boostUrl
self.prepaidGiveaways = prepaidGiveaways
self.myBoostSlots = myBoostSlots
}
}
case boostsStatus(Cons_boostsStatus)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -182,7 +264,17 @@ public extension Api.premium {
}
public extension Api.premium {
enum MyBoosts: TypeConstructorDescription {
case myBoosts(myBoosts: [Api.MyBoost], chats: [Api.Chat], users: [Api.User])
public class Cons_myBoosts {
public var myBoosts: [Api.MyBoost]
public var chats: [Api.Chat]
public var users: [Api.User]
public init(myBoosts: [Api.MyBoost], chats: [Api.Chat], users: [Api.User]) {
self.myBoosts = myBoosts
self.chats = chats
self.users = users
}
}
case myBoosts(Cons_myBoosts)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -211,7 +303,15 @@ public extension Api.premium {
}
public extension Api.smsjobs {
enum EligibilityToJoin: TypeConstructorDescription {
case eligibleToJoin(termsUrl: String, monthlySentSms: Int32)
public class Cons_eligibleToJoin {
public var termsUrl: String
public var monthlySentSms: Int32
public init(termsUrl: String, monthlySentSms: Int32) {
self.termsUrl = termsUrl
self.monthlySentSms = monthlySentSms
}
}
case eligibleToJoin(Cons_eligibleToJoin)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -240,7 +340,27 @@ public extension Api.smsjobs {
}
public extension Api.smsjobs {
enum Status: TypeConstructorDescription {
case status(flags: Int32, recentSent: Int32, recentSince: Int32, recentRemains: Int32, totalSent: Int32, totalSince: Int32, lastGiftSlug: String?, termsUrl: String)
public class Cons_status {
public var flags: Int32
public var recentSent: Int32
public var recentSince: Int32
public var recentRemains: Int32
public var totalSent: Int32
public var totalSince: Int32
public var lastGiftSlug: String?
public var termsUrl: String
public init(flags: Int32, recentSent: Int32, recentSince: Int32, recentRemains: Int32, totalSent: Int32, totalSince: Int32, lastGiftSlug: String?, termsUrl: String) {
self.flags = flags
self.recentSent = recentSent
self.recentSince = recentSince
self.recentRemains = recentRemains
self.totalSent = totalSent
self.totalSince = totalSince
self.lastGiftSlug = lastGiftSlug
self.termsUrl = termsUrl
}
}
case status(Cons_status)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -269,7 +389,55 @@ public extension Api.smsjobs {
}
public extension Api.stats {
enum BroadcastStats: TypeConstructorDescription {
case broadcastStats(period: Api.StatsDateRangeDays, followers: Api.StatsAbsValueAndPrev, viewsPerPost: Api.StatsAbsValueAndPrev, sharesPerPost: Api.StatsAbsValueAndPrev, reactionsPerPost: Api.StatsAbsValueAndPrev, viewsPerStory: Api.StatsAbsValueAndPrev, sharesPerStory: Api.StatsAbsValueAndPrev, reactionsPerStory: Api.StatsAbsValueAndPrev, enabledNotifications: Api.StatsPercentValue, growthGraph: Api.StatsGraph, followersGraph: Api.StatsGraph, muteGraph: Api.StatsGraph, topHoursGraph: Api.StatsGraph, interactionsGraph: Api.StatsGraph, ivInteractionsGraph: Api.StatsGraph, viewsBySourceGraph: Api.StatsGraph, newFollowersBySourceGraph: Api.StatsGraph, languagesGraph: Api.StatsGraph, reactionsByEmotionGraph: Api.StatsGraph, storyInteractionsGraph: Api.StatsGraph, storyReactionsByEmotionGraph: Api.StatsGraph, recentPostsInteractions: [Api.PostInteractionCounters])
public class Cons_broadcastStats {
public var period: Api.StatsDateRangeDays
public var followers: Api.StatsAbsValueAndPrev
public var viewsPerPost: Api.StatsAbsValueAndPrev
public var sharesPerPost: Api.StatsAbsValueAndPrev
public var reactionsPerPost: Api.StatsAbsValueAndPrev
public var viewsPerStory: Api.StatsAbsValueAndPrev
public var sharesPerStory: Api.StatsAbsValueAndPrev
public var reactionsPerStory: Api.StatsAbsValueAndPrev
public var enabledNotifications: Api.StatsPercentValue
public var growthGraph: Api.StatsGraph
public var followersGraph: Api.StatsGraph
public var muteGraph: Api.StatsGraph
public var topHoursGraph: Api.StatsGraph
public var interactionsGraph: Api.StatsGraph
public var ivInteractionsGraph: Api.StatsGraph
public var viewsBySourceGraph: Api.StatsGraph
public var newFollowersBySourceGraph: Api.StatsGraph
public var languagesGraph: Api.StatsGraph
public var reactionsByEmotionGraph: Api.StatsGraph
public var storyInteractionsGraph: Api.StatsGraph
public var storyReactionsByEmotionGraph: Api.StatsGraph
public var recentPostsInteractions: [Api.PostInteractionCounters]
public init(period: Api.StatsDateRangeDays, followers: Api.StatsAbsValueAndPrev, viewsPerPost: Api.StatsAbsValueAndPrev, sharesPerPost: Api.StatsAbsValueAndPrev, reactionsPerPost: Api.StatsAbsValueAndPrev, viewsPerStory: Api.StatsAbsValueAndPrev, sharesPerStory: Api.StatsAbsValueAndPrev, reactionsPerStory: Api.StatsAbsValueAndPrev, enabledNotifications: Api.StatsPercentValue, growthGraph: Api.StatsGraph, followersGraph: Api.StatsGraph, muteGraph: Api.StatsGraph, topHoursGraph: Api.StatsGraph, interactionsGraph: Api.StatsGraph, ivInteractionsGraph: Api.StatsGraph, viewsBySourceGraph: Api.StatsGraph, newFollowersBySourceGraph: Api.StatsGraph, languagesGraph: Api.StatsGraph, reactionsByEmotionGraph: Api.StatsGraph, storyInteractionsGraph: Api.StatsGraph, storyReactionsByEmotionGraph: Api.StatsGraph, recentPostsInteractions: [Api.PostInteractionCounters]) {
self.period = period
self.followers = followers
self.viewsPerPost = viewsPerPost
self.sharesPerPost = sharesPerPost
self.reactionsPerPost = reactionsPerPost
self.viewsPerStory = viewsPerStory
self.sharesPerStory = sharesPerStory
self.reactionsPerStory = reactionsPerStory
self.enabledNotifications = enabledNotifications
self.growthGraph = growthGraph
self.followersGraph = followersGraph
self.muteGraph = muteGraph
self.topHoursGraph = topHoursGraph
self.interactionsGraph = interactionsGraph
self.ivInteractionsGraph = ivInteractionsGraph
self.viewsBySourceGraph = viewsBySourceGraph
self.newFollowersBySourceGraph = newFollowersBySourceGraph
self.languagesGraph = languagesGraph
self.reactionsByEmotionGraph = reactionsByEmotionGraph
self.storyInteractionsGraph = storyInteractionsGraph
self.storyReactionsByEmotionGraph = storyReactionsByEmotionGraph
self.recentPostsInteractions = recentPostsInteractions
}
}
case broadcastStats(Cons_broadcastStats)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -298,7 +466,45 @@ public extension Api.stats {
}
public extension Api.stats {
enum MegagroupStats: TypeConstructorDescription {
case megagroupStats(period: Api.StatsDateRangeDays, members: Api.StatsAbsValueAndPrev, messages: Api.StatsAbsValueAndPrev, viewers: Api.StatsAbsValueAndPrev, posters: Api.StatsAbsValueAndPrev, growthGraph: Api.StatsGraph, membersGraph: Api.StatsGraph, newMembersBySourceGraph: Api.StatsGraph, languagesGraph: Api.StatsGraph, messagesGraph: Api.StatsGraph, actionsGraph: Api.StatsGraph, topHoursGraph: Api.StatsGraph, weekdaysGraph: Api.StatsGraph, topPosters: [Api.StatsGroupTopPoster], topAdmins: [Api.StatsGroupTopAdmin], topInviters: [Api.StatsGroupTopInviter], users: [Api.User])
public class Cons_megagroupStats {
public var period: Api.StatsDateRangeDays
public var members: Api.StatsAbsValueAndPrev
public var messages: Api.StatsAbsValueAndPrev
public var viewers: Api.StatsAbsValueAndPrev
public var posters: Api.StatsAbsValueAndPrev
public var growthGraph: Api.StatsGraph
public var membersGraph: Api.StatsGraph
public var newMembersBySourceGraph: Api.StatsGraph
public var languagesGraph: Api.StatsGraph
public var messagesGraph: Api.StatsGraph
public var actionsGraph: Api.StatsGraph
public var topHoursGraph: Api.StatsGraph
public var weekdaysGraph: Api.StatsGraph
public var topPosters: [Api.StatsGroupTopPoster]
public var topAdmins: [Api.StatsGroupTopAdmin]
public var topInviters: [Api.StatsGroupTopInviter]
public var users: [Api.User]
public init(period: Api.StatsDateRangeDays, members: Api.StatsAbsValueAndPrev, messages: Api.StatsAbsValueAndPrev, viewers: Api.StatsAbsValueAndPrev, posters: Api.StatsAbsValueAndPrev, growthGraph: Api.StatsGraph, membersGraph: Api.StatsGraph, newMembersBySourceGraph: Api.StatsGraph, languagesGraph: Api.StatsGraph, messagesGraph: Api.StatsGraph, actionsGraph: Api.StatsGraph, topHoursGraph: Api.StatsGraph, weekdaysGraph: Api.StatsGraph, topPosters: [Api.StatsGroupTopPoster], topAdmins: [Api.StatsGroupTopAdmin], topInviters: [Api.StatsGroupTopInviter], users: [Api.User]) {
self.period = period
self.members = members
self.messages = messages
self.viewers = viewers
self.posters = posters
self.growthGraph = growthGraph
self.membersGraph = membersGraph
self.newMembersBySourceGraph = newMembersBySourceGraph
self.languagesGraph = languagesGraph
self.messagesGraph = messagesGraph
self.actionsGraph = actionsGraph
self.topHoursGraph = topHoursGraph
self.weekdaysGraph = weekdaysGraph
self.topPosters = topPosters
self.topAdmins = topAdmins
self.topInviters = topInviters
self.users = users
}
}
case megagroupStats(Cons_megagroupStats)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -327,7 +533,15 @@ public extension Api.stats {
}
public extension Api.stats {
enum MessageStats: TypeConstructorDescription {
case messageStats(viewsGraph: Api.StatsGraph, reactionsByEmotionGraph: Api.StatsGraph)
public class Cons_messageStats {
public var viewsGraph: Api.StatsGraph
public var reactionsByEmotionGraph: Api.StatsGraph
public init(viewsGraph: Api.StatsGraph, reactionsByEmotionGraph: Api.StatsGraph) {
self.viewsGraph = viewsGraph
self.reactionsByEmotionGraph = reactionsByEmotionGraph
}
}
case messageStats(Cons_messageStats)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -356,7 +570,23 @@ public extension Api.stats {
}
public extension Api.stats {
enum PublicForwards: TypeConstructorDescription {
case publicForwards(flags: Int32, count: Int32, forwards: [Api.PublicForward], nextOffset: String?, chats: [Api.Chat], users: [Api.User])
public class Cons_publicForwards {
public var flags: Int32
public var count: Int32
public var forwards: [Api.PublicForward]
public var nextOffset: String?
public var chats: [Api.Chat]
public var users: [Api.User]
public init(flags: Int32, count: Int32, forwards: [Api.PublicForward], nextOffset: String?, chats: [Api.Chat], users: [Api.User]) {
self.flags = flags
self.count = count
self.forwards = forwards
self.nextOffset = nextOffset
self.chats = chats
self.users = users
}
}
case publicForwards(Cons_publicForwards)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG
@ -385,7 +615,15 @@ public extension Api.stats {
}
public extension Api.stats {
enum StoryStats: TypeConstructorDescription {
case storyStats(viewsGraph: Api.StatsGraph, reactionsByEmotionGraph: Api.StatsGraph)
public class Cons_storyStats {
public var viewsGraph: Api.StatsGraph
public var reactionsByEmotionGraph: Api.StatsGraph
public init(viewsGraph: Api.StatsGraph, reactionsByEmotionGraph: Api.StatsGraph) {
self.viewsGraph = viewsGraph
self.reactionsByEmotionGraph = reactionsByEmotionGraph
}
}
case storyStats(Cons_storyStats)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
#if DEBUG

View file

@ -1622,7 +1622,8 @@ private func acceptCallSession(accountPeerId: PeerId, postbox: Postbox, network:
if let call = call {
return postbox.transaction { transaction -> AcceptCallResult in
switch call {
case let .phoneCall(phoneCall, users):
case let .phoneCall(phoneCallData):
let (phoneCall, users) = (phoneCallData.phoneCall, phoneCallData.users)
updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: AccumulatedPeers(users: users))
switch phoneCall {
@ -1693,7 +1694,8 @@ private func requestCallSession(postbox: Postbox, network: Network, peerId: Peer
return network.request(Api.functions.phone.requestCall(flags: callFlags, userId: inputUser, randomId: Int32(bitPattern: arc4random()), gAHash: Buffer(data: gAHash), protocol: .phoneCallProtocol(.init(flags: (1 << 0) | (1 << 1), minLayer: minLayer, maxLayer: maxLayer, libraryVersions: versions))))
|> map { result -> RequestCallSessionResult in
switch result {
case let .phoneCall(phoneCall, _):
case let .phoneCall(phoneCallData):
let (phoneCall, _) = (phoneCallData.phoneCall, phoneCallData.users)
switch phoneCall {
case let .phoneCallRequested(phoneCallRequestedData):
let (id, accessHash) = (phoneCallRequestedData.id, phoneCallRequestedData.accessHash)
@ -1737,7 +1739,8 @@ private func confirmCallSession(network: Network, stableId: CallSessionStableId,
|> map { result -> Api.PhoneCall? in
if let result = result {
switch result {
case let .phoneCall(phoneCall, _):
case let .phoneCall(phoneCallData):
let (phoneCall, _) = (phoneCallData.phoneCall, phoneCallData.users)
return phoneCall
}
} else {

View file

@ -100,7 +100,8 @@ func _internal_getChannelBoostStatus(account: Account, peerId: PeerId) -> Signal
return nil
}
switch result {
case let .boostsStatus(flags, level, currentLevelBoosts, boosts, giftBoosts, nextLevelBoosts, premiumAudience, boostUrl, prepaidGiveaways, myBoostSlots):
case let .boostsStatus(boostsStatusData):
let (flags, level, currentLevelBoosts, boosts, giftBoosts, nextLevelBoosts, premiumAudience, boostUrl, prepaidGiveaways, myBoostSlots) = (boostsStatusData.flags, boostsStatusData.level, boostsStatusData.currentLevelBoosts, boostsStatusData.boosts, boostsStatusData.giftBoosts, boostsStatusData.nextLevelBoosts, boostsStatusData.premiumAudience, boostsStatusData.boostUrl, boostsStatusData.prepaidGiveaways, boostsStatusData.myBoostSlots)
let _ = myBoostSlots
return ChannelBoostStatus(level: Int(level), boosts: Int(boosts), giftBoosts: giftBoosts.flatMap(Int.init), currentLevelBoosts: Int(currentLevelBoosts), nextLevelBoosts: nextLevelBoosts.flatMap(Int.init), premiumAudience: premiumAudience.flatMap({ StatsPercentValue(apiPercentValue: $0) }), url: boostUrl, prepaidGiveaways: prepaidGiveaways?.map({ PrepaidGiveaway(apiPrepaidGiveaway: $0) }) ?? [], boostedByMe: (flags & (1 << 2)) != 0)
}
@ -274,7 +275,8 @@ private final class ChannelBoostersContextImpl {
return ([], 0, nil)
}
switch result {
case let .boostsList(_, count, boosts, nextOffset, users):
case let .boostsList(boostsListData):
let (_, count, boosts, nextOffset, users) = (boostsListData.flags, boostsListData.count, boostsListData.boosts, boostsListData.nextOffset, boostsListData.users)
updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: AccumulatedPeers(users: users))
var resultBoosts: [ChannelBoostersContext.State.Boost] = []
for boost in boosts {
@ -547,7 +549,8 @@ extension MyBoostStatus {
init(apiMyBoostStatus: Api.premium.MyBoosts, accountPeerId: PeerId, transaction: Transaction) {
var boostsResult: [MyBoostStatus.Boost] = []
switch apiMyBoostStatus {
case let .myBoosts(myBoosts, chats, users):
case let .myBoosts(myBoostsData):
let (myBoosts, chats, users) = (myBoostsData.myBoosts, myBoostsData.chats, myBoostsData.users)
let parsedPeers = AccumulatedPeers(transaction: transaction, chats: chats, users: users)
updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: parsedPeers)
for boost in myBoosts {

View file

@ -98,7 +98,8 @@ private func requestMessageStats(postbox: Postbox, network: Network, messageId:
return signal
|> mapToSignal { result -> Signal<MessageStats?, MTRpcError> in
if case let .messageStats(apiInteractionsGraph, apiReactionsGraph) = result {
if case let .messageStats(messageStatsData) = result {
let (apiInteractionsGraph, apiReactionsGraph) = (messageStatsData.viewsGraph, messageStatsData.reactionsByEmotionGraph)
let interactionsGraph = StatsGraph(apiStatsGraph: apiInteractionsGraph)
var interactionsGraphDelta: Int64 = 86400
if case let .Loaded(_, data) = interactionsGraph {

View file

@ -836,7 +836,8 @@ private func requestGroupStats(accountPeerId: PeerId, postbox: Postbox, network:
return signal
|> mapToSignal { result -> Signal<GroupStats?, MTRpcError> in
return postbox.transaction { transaction -> GroupStats? in
if case let .megagroupStats(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, users) = result {
if case let .megagroupStats(megagroupStatsData) = result {
let users = megagroupStatsData.users
updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: AccumulatedPeers(users: users))
}
return GroupStats(apiMegagroupStats: result)
@ -1203,7 +1204,8 @@ extension ChannelStatsPostInteractions {
extension ChannelStats {
init(apiBroadcastStats: Api.stats.BroadcastStats, peerId: PeerId) {
switch apiBroadcastStats {
case let .broadcastStats(period, followers, viewsPerPost, sharesPerPost, reactionsPerPost, viewsPerStory, sharesPerStory, reactionsPerStory, enabledNotifications, apiGrowthGraph, apiFollowersGraph, apiMuteGraph, apiTopHoursGraph, apiInteractionsGraph, apiInstantViewInteractionsGraph, apiViewsBySourceGraph, apiNewFollowersBySourceGraph, apiLanguagesGraph, apiReactionsByEmotionGraph, apiStoryInteractionsGraph, apiStoryReactionsByEmotionGraph, recentPostInteractions):
case let .broadcastStats(broadcastStatsData):
let (period, followers, viewsPerPost, sharesPerPost, reactionsPerPost, viewsPerStory, sharesPerStory, reactionsPerStory, enabledNotifications, apiGrowthGraph, apiFollowersGraph, apiMuteGraph, apiTopHoursGraph, apiInteractionsGraph, apiInstantViewInteractionsGraph, apiViewsBySourceGraph, apiNewFollowersBySourceGraph, apiLanguagesGraph, apiReactionsByEmotionGraph, apiStoryInteractionsGraph, apiStoryReactionsByEmotionGraph, recentPostInteractions) = (broadcastStatsData.period, broadcastStatsData.followers, broadcastStatsData.viewsPerPost, broadcastStatsData.sharesPerPost, broadcastStatsData.reactionsPerPost, broadcastStatsData.viewsPerStory, broadcastStatsData.sharesPerStory, broadcastStatsData.reactionsPerStory, broadcastStatsData.enabledNotifications, broadcastStatsData.growthGraph, broadcastStatsData.followersGraph, broadcastStatsData.muteGraph, broadcastStatsData.topHoursGraph, broadcastStatsData.interactionsGraph, broadcastStatsData.ivInteractionsGraph, broadcastStatsData.viewsBySourceGraph, broadcastStatsData.newFollowersBySourceGraph, broadcastStatsData.languagesGraph, broadcastStatsData.reactionsByEmotionGraph, broadcastStatsData.storyInteractionsGraph, broadcastStatsData.storyReactionsByEmotionGraph, broadcastStatsData.recentPostsInteractions)
let growthGraph = StatsGraph(apiStatsGraph: apiGrowthGraph)
let isEmpty = growthGraph.isEmpty
@ -1267,9 +1269,10 @@ extension GroupStatsTopInviter {
extension GroupStats {
init(apiMegagroupStats: Api.stats.MegagroupStats) {
switch apiMegagroupStats {
case let .megagroupStats(period, members, messages, viewers, posters, apiGrowthGraph, apiMembersGraph, apiNewMembersBySourceGraph, apiLanguagesGraph, apiMessagesGraph, apiActionsGraph, apiTopHoursGraph, apiTopWeekdaysGraph, topPosters, topAdmins, topInviters, _):
case let .megagroupStats(megagroupStatsData):
let (period, members, messages, viewers, posters, apiGrowthGraph, apiMembersGraph, apiNewMembersBySourceGraph, apiLanguagesGraph, apiMessagesGraph, apiActionsGraph, apiTopHoursGraph, apiTopWeekdaysGraph, topPosters, topAdmins, topInviters) = (megagroupStatsData.period, megagroupStatsData.members, megagroupStatsData.messages, megagroupStatsData.viewers, megagroupStatsData.posters, megagroupStatsData.growthGraph, megagroupStatsData.membersGraph, megagroupStatsData.newMembersBySourceGraph, megagroupStatsData.languagesGraph, megagroupStatsData.messagesGraph, megagroupStatsData.actionsGraph, megagroupStatsData.topHoursGraph, megagroupStatsData.weekdaysGraph, megagroupStatsData.topPosters, megagroupStatsData.topAdmins, megagroupStatsData.topInviters)
let growthGraph = StatsGraph(apiStatsGraph: apiGrowthGraph)
self.init(period: StatsDateRange(apiStatsDateRangeDays: period), members: StatsValue(apiStatsAbsValueAndPrev: members), messages: StatsValue(apiStatsAbsValueAndPrev: messages), viewers: StatsValue(apiStatsAbsValueAndPrev: viewers), posters: StatsValue(apiStatsAbsValueAndPrev: posters), growthGraph: growthGraph, membersGraph: StatsGraph(apiStatsGraph: apiMembersGraph), newMembersBySourceGraph: StatsGraph(apiStatsGraph: apiNewMembersBySourceGraph), languagesGraph: StatsGraph(apiStatsGraph: apiLanguagesGraph), messagesGraph: StatsGraph(apiStatsGraph: apiMessagesGraph), actionsGraph: StatsGraph(apiStatsGraph: apiActionsGraph), topHoursGraph: StatsGraph(apiStatsGraph: apiTopHoursGraph), topWeekdaysGraph: StatsGraph(apiStatsGraph: apiTopWeekdaysGraph), topPosters: topPosters.map { GroupStatsTopPoster(apiStatsGroupTopPoster: $0) }, topAdmins: topAdmins.map { GroupStatsTopAdmin(apiStatsGroupTopAdmin: $0) }, topInviters: topInviters.map { GroupStatsTopInviter(apiStatsGroupTopInviter: $0) })
}
}

View file

@ -68,7 +68,8 @@ private func requestStoryStats(accountPeerId: PeerId, postbox: Postbox, network:
return signal
|> mapToSignal { result -> Signal<StoryStats?, MTRpcError> in
if case let .storyStats(apiInteractionsGraph, apiReactionsGraph) = result {
if case let .storyStats(storyStatsData) = result {
let (apiInteractionsGraph, apiReactionsGraph) = (storyStatsData.viewsGraph, storyStatsData.reactionsByEmotionGraph)
let interactionsGraph = StatsGraph(apiStatsGraph: apiInteractionsGraph)
var interactionsGraphDelta: Int64 = 86400
if case let .Loaded(_, data) = interactionsGraph {
@ -294,7 +295,8 @@ private final class StoryStatsPublicForwardsContextImpl {
return ([], 0, nil)
}
switch result {
case let .publicForwards(_, count, forwards, nextOffset, chats, users):
case let .publicForwards(publicForwardsData):
let (count, forwards, nextOffset, chats, users) = (publicForwardsData.count, publicForwardsData.forwards, publicForwardsData.nextOffset, publicForwardsData.chats, publicForwardsData.users)
var peers: [PeerId: Peer] = [:]
for user in users {
if let user = TelegramUser.merge(transaction.getPeer(user.peerId) as? TelegramUser, rhs: user) {

View file

@ -218,7 +218,8 @@ func _internal_getCurrentGroupCall(account: Account, reference: InternalGroupCal
}
|> mapToSignal { result -> Signal<GroupCallSummary?, GetCurrentGroupCallError> in
switch result {
case let .groupCall(call, participants, _, chats, users):
case let .groupCall(groupCallData):
let (call, participants, chats, users) = (groupCallData.call, groupCallData.participants, groupCallData.chats, groupCallData.users)
return account.postbox.transaction { transaction -> GroupCallSummary? in
guard let info = GroupCallInfo(call) else {
return nil
@ -278,7 +279,8 @@ func _internal_getCurrentGroupCallInfo(account: Account, reference: InternalGrou
return .single(nil)
}
switch result {
case let .groupCall(call, participants, _, chats, users):
case let .groupCall(groupCallData):
let (call, participants, chats, users) = (groupCallData.call, groupCallData.participants, groupCallData.chats, groupCallData.users)
return account.postbox.transaction { transaction -> (participants: [PeerId], duration: Int32?)? in
if case let .groupCallDiscarded(groupCallDiscardedData) = call {
let (_, _, duration) = (groupCallDiscardedData.id, groupCallDiscardedData.accessHash, groupCallDiscardedData.duration)
@ -557,7 +559,8 @@ func _internal_getGroupCallParticipants(account: Account, reference: InternalGro
if let result {
switch result {
case let .groupParticipants(count, participants, nextOffset, chats, users, apiVersion):
case let .groupParticipants(groupParticipantsData):
let (count, participants, nextOffset, chats, users, apiVersion) = (groupParticipantsData.count, groupParticipantsData.participants, groupParticipantsData.nextOffset, groupParticipantsData.chats, groupParticipantsData.users, groupParticipantsData.version)
totalCount = Int(count)
version = apiVersion
@ -2850,7 +2853,8 @@ func _internal_groupCallInviteLinks(account: Account, reference: InternalGroupCa
return .single(nil)
}
|> mapToSignal { result -> Signal<String?, NoError> in
if let result = result, case let .exportedGroupCallInvite(link) = result {
if let result = result, case let .exportedGroupCallInvite(exportedGroupCallInviteData) = result {
let link = exportedGroupCallInviteData.link
return .single(link)
}
return .single(nil)
@ -2862,7 +2866,8 @@ func _internal_groupCallInviteLinks(account: Account, reference: InternalGroupCa
return .single(nil)
}
|> mapToSignal { result -> Signal<String?, NoError> in
if let result = result, case let .exportedGroupCallInvite(link) = result {
if let result = result, case let .exportedGroupCallInvite(exportedGroupCallInviteData) = result {
let link = exportedGroupCallInviteData.link
return .single(link)
}
return .single(nil)
@ -2921,7 +2926,8 @@ func _internal_groupCallDisplayAsAvailablePeers(accountPeerId: PeerId, network:
return .single([])
}
switch result {
case let .joinAsPeers(_, chats, users):
case let .joinAsPeers(joinAsPeersData):
let (chats, users) = (joinAsPeersData.chats, joinAsPeersData.users)
return postbox.transaction { transaction -> [FoundPeer] in
var subscribers: [PeerId: Int32] = [:]
let parsedPeers = AccumulatedPeers(transaction: transaction, chats: chats, users: users)
@ -3080,7 +3086,8 @@ func _internal_getAudioBroadcastDataSource(account: Account, callId: Int64, acce
return .single(nil)
}
switch result {
case let .groupCall(call, _, _, _, _):
case let .groupCall(groupCallData):
let call = groupCallData.call
if let datacenterId = GroupCallInfo(call)?.streamDcId.flatMap(Int.init) {
return account.network.download(datacenterId: datacenterId, isMedia: true, tag: nil)
|> map { download -> AudioBroadcastDataSource? in
@ -3311,7 +3318,8 @@ func _internal_getGroupCallStreamCredentials(account: Account, peerId: PeerId, i
}
|> map { result -> GroupCallStreamCredentials in
switch result {
case let .groupCallStreamRtmpUrl(url, key):
case let .groupCallStreamRtmpUrl(groupCallStreamRtmpUrlData):
let (url, key) = (groupCallStreamRtmpUrlData.url, groupCallStreamRtmpUrlData.key)
return GroupCallStreamCredentials(url: url, streamKey: key)
}
}
@ -3359,7 +3367,8 @@ func _internal_createConferenceCall(postbox: Postbox, network: Network, accountP
}
|> castError(CreateConferenceCallError.self)
|> mapToSignal { result -> Signal<EngineCreatedGroupCall, CreateConferenceCallError> in
if let result, case let .exportedGroupCallInvite(link) = result {
if let result, case let .exportedGroupCallInvite(exportedGroupCallInviteData) = result {
let link = exportedGroupCallInviteData.link
let slug = link.components(separatedBy: "/").last ?? link
return .single(EngineCreatedGroupCall(
slug: slug,
@ -4124,7 +4133,8 @@ public final class GroupCallMessagesContext {
return postbox.transaction { transaction -> (Api.phone.GroupCallStars, [PeerId: Peer])? in
var peers: [PeerId: Peer] = [:]
switch result {
case let .groupCallStars(_, topDonors, chats, users):
case let .groupCallStars(groupCallStarsData):
let (topDonors, chats, users) = (groupCallStarsData.topDonors, groupCallStarsData.chats, groupCallStarsData.users)
updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: AccumulatedPeers(chats: chats, users: users))
for topDonor in topDonors {
switch topDonor {
@ -4147,7 +4157,8 @@ public final class GroupCallMessagesContext {
}
if let (result, _) = result {
switch result {
case let .groupCallStars(totalStars, topDonors, _, _):
case let .groupCallStars(groupCallStarsData):
let (totalStars, topDonors) = (groupCallStarsData.totalStars, groupCallStarsData.topDonors)
var state = self.state
state.topStars = topDonors.map { topDonor in
switch topDonor {

View file

@ -161,7 +161,8 @@ public extension TelegramEngine {
return dataSource.download.request(Api.functions.phone.getGroupCallStreamChannels(call: .inputGroupCall(.init(id: callId, accessHash: accessHash))))
|> mapToSignal { result -> Signal<EngineCallStreamState?, MTRpcError> in
switch result {
case let .groupCallStreamChannels(channels):
case let .groupCallStreamChannels(groupCallStreamChannelsData):
let channels = groupCallStreamChannelsData.channels
let state = EngineCallStreamState(channels: channels.map { channel -> EngineCallStreamState.Channel in
switch channel {
case let .groupCallStreamChannel(groupCallStreamChannelData):

View file

@ -235,7 +235,8 @@ func _internal_updatePeerPhotoInternal(postbox: Postbox, network: Network, state
var videoRepresentations: [TelegramMediaImage.VideoRepresentation] = []
var image: TelegramMediaImage?
switch photo {
case let .photo(apiPhoto, _):
case let .photo(photoData):
let (apiPhoto, _) = (photoData.photo, photoData.users)
image = telegramMediaImageFromApiPhoto(apiPhoto)
switch apiPhoto {
case .photoEmpty:
@ -451,7 +452,8 @@ func _internal_updatePeerPhotoInternal(postbox: Postbox, network: Network, state
var updatedImage: TelegramMediaImage?
var representations: [TelegramMediaImageRepresentation] = []
switch photo {
case let .photo(apiPhoto, _):
case let .photo(photoData):
let (apiPhoto, _) = (photoData.photo, photoData.users)
updatedImage = telegramMediaImageFromApiPhoto(apiPhoto)
switch apiPhoto {
case .photoEmpty:
@ -502,7 +504,8 @@ func _internal_updatePeerPhotoInternal(postbox: Postbox, network: Network, state
} else {
var updatedUsers: [TelegramUser] = []
switch photo {
case let .photo(_, apiUsers):
case let .photo(photoData):
let (_, apiUsers) = (photoData.photo, photoData.users)
updatedUsers = apiUsers.map { TelegramUser(user: $0) }
}
return postbox.transaction { transaction -> UpdatePeerPhotoStatus in
@ -585,7 +588,8 @@ func _internal_updatePeerPhotoExisting(network: Network, reference: TelegramMedi
return .complete()
}
|> mapToSignal { photo -> Signal<TelegramMediaImage?, NoError> in
if case let .photo(photo, _) = photo {
if case let .photo(photoData) = photo {
let (photo, _) = (photoData.photo, photoData.users)
return .single(telegramMediaImageFromApiPhoto(photo))
} else {
return .complete()

View file

@ -40,10 +40,12 @@ func _internal_requestPeerPhotos(accountPeerId: PeerId, postbox: Postbox, networ
let totalCount:Int
let photos: [Api.Photo]
switch result {
case let .photos(photosValue, _):
case let .photos(photosData):
let (photosValue, _) = (photosData.photos, photosData.users)
photos = photosValue
totalCount = photos.count
case let .photosSlice(count, photosValue, _):
case let .photosSlice(photosSliceData):
let (count, photosValue, _) = (photosSliceData.count, photosSliceData.photos, photosSliceData.users)
photos = photosValue
totalCount = Int(count)
}