mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 22:55:00 +00:00
Improved streaming
This commit is contained in:
@@ -145,7 +145,7 @@ public final class ThemePreviewController: ViewController {
|
|||||||
|> deliverOnMainQueue).start(next: { [weak self] theme, presentationTheme in
|
|> deliverOnMainQueue).start(next: { [weak self] theme, presentationTheme in
|
||||||
if let strongSelf = self, let theme = theme {
|
if let strongSelf = self, let theme = theme {
|
||||||
let titleView = CounterContollerTitleView(theme: strongSelf.previewTheme)
|
let titleView = CounterContollerTitleView(theme: strongSelf.previewTheme)
|
||||||
titleView.title = CounterContollerTitle(title: themeName, counter: strongSelf.presentationData.strings.Theme_UsersCount(max(1, theme.installCount)))
|
titleView.title = CounterContollerTitle(title: themeName, counter: strongSelf.presentationData.strings.Theme_UsersCount(max(1, theme.installCount ?? 0)))
|
||||||
strongSelf.navigationItem.titleView = titleView
|
strongSelf.navigationItem.titleView = titleView
|
||||||
strongSelf.navigationBar?.updatePresentationData(NavigationBarPresentationData(presentationTheme: presentationTheme, presentationStrings: strongSelf.presentationData.strings))
|
strongSelf.navigationBar?.updatePresentationData(NavigationBarPresentationData(presentationTheme: presentationTheme, presentationStrings: strongSelf.presentationData.strings))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|||||||
dict[-457104426] = { return Api.InputGeoPoint.parse_inputGeoPointEmpty($0) }
|
dict[-457104426] = { return Api.InputGeoPoint.parse_inputGeoPointEmpty($0) }
|
||||||
dict[1210199983] = { return Api.InputGeoPoint.parse_inputGeoPoint($0) }
|
dict[1210199983] = { return Api.InputGeoPoint.parse_inputGeoPoint($0) }
|
||||||
dict[-784000893] = { return Api.payments.ValidatedRequestedInfo.parse_validatedRequestedInfo($0) }
|
dict[-784000893] = { return Api.payments.ValidatedRequestedInfo.parse_validatedRequestedInfo($0) }
|
||||||
dict[-1977734781] = { return Api.ChatFull.parse_chatFull($0) }
|
dict[1235264985] = { return Api.ChatFull.parse_chatFull($0) }
|
||||||
dict[1418477459] = { return Api.ChatFull.parse_channelFull($0) }
|
dict[793980732] = { return Api.ChatFull.parse_channelFull($0) }
|
||||||
dict[-1159937629] = { return Api.PollResults.parse_pollResults($0) }
|
dict[-1159937629] = { return Api.PollResults.parse_pollResults($0) }
|
||||||
dict[-925415106] = { return Api.ChatParticipant.parse_chatParticipant($0) }
|
dict[-925415106] = { return Api.ChatParticipant.parse_chatParticipant($0) }
|
||||||
dict[-636267638] = { return Api.ChatParticipant.parse_chatParticipantCreator($0) }
|
dict[-636267638] = { return Api.ChatParticipant.parse_chatParticipantCreator($0) }
|
||||||
@@ -106,7 +106,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|||||||
dict[483104362] = { return Api.RichText.parse_textPhone($0) }
|
dict[483104362] = { return Api.RichText.parse_textPhone($0) }
|
||||||
dict[136105807] = { return Api.RichText.parse_textImage($0) }
|
dict[136105807] = { return Api.RichText.parse_textImage($0) }
|
||||||
dict[894777186] = { return Api.RichText.parse_textAnchor($0) }
|
dict[894777186] = { return Api.RichText.parse_textAnchor($0) }
|
||||||
dict[328899191] = { return Api.UserFull.parse_userFull($0) }
|
dict[-694681851] = { return Api.UserFull.parse_userFull($0) }
|
||||||
dict[-292807034] = { return Api.InputChannel.parse_inputChannelEmpty($0) }
|
dict[-292807034] = { return Api.InputChannel.parse_inputChannelEmpty($0) }
|
||||||
dict[-1343524562] = { return Api.InputChannel.parse_inputChannel($0) }
|
dict[-1343524562] = { return Api.InputChannel.parse_inputChannel($0) }
|
||||||
dict[707290417] = { return Api.InputChannel.parse_inputChannelFromMessage($0) }
|
dict[707290417] = { return Api.InputChannel.parse_inputChannelFromMessage($0) }
|
||||||
@@ -587,6 +587,8 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|||||||
dict[1735736008] = { return Api.GroupCallParticipantVideo.parse_groupCallParticipantVideo($0) }
|
dict[1735736008] = { return Api.GroupCallParticipantVideo.parse_groupCallParticipantVideo($0) }
|
||||||
dict[-58224696] = { return Api.PhoneCallProtocol.parse_phoneCallProtocol($0) }
|
dict[-58224696] = { return Api.PhoneCallProtocol.parse_phoneCallProtocol($0) }
|
||||||
dict[-1237848657] = { return Api.StatsDateRangeDays.parse_statsDateRangeDays($0) }
|
dict[-1237848657] = { return Api.StatsDateRangeDays.parse_statsDateRangeDays($0) }
|
||||||
|
dict[-535699004] = { return Api.account.ChatThemes.parse_chatThemesNotModified($0) }
|
||||||
|
dict[-28524867] = { return Api.account.ChatThemes.parse_chatThemes($0) }
|
||||||
dict[-275956116] = { return Api.messages.AffectedFoundMessages.parse_affectedFoundMessages($0) }
|
dict[-275956116] = { return Api.messages.AffectedFoundMessages.parse_affectedFoundMessages($0) }
|
||||||
dict[795652779] = { return Api.BotCommandScope.parse_botCommandScopeDefault($0) }
|
dict[795652779] = { return Api.BotCommandScope.parse_botCommandScopeDefault($0) }
|
||||||
dict[1011811544] = { return Api.BotCommandScope.parse_botCommandScopeUsers($0) }
|
dict[1011811544] = { return Api.BotCommandScope.parse_botCommandScopeUsers($0) }
|
||||||
@@ -711,6 +713,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|||||||
dict[1421174295] = { return Api.WebPageAttribute.parse_webPageAttributeTheme($0) }
|
dict[1421174295] = { return Api.WebPageAttribute.parse_webPageAttributeTheme($0) }
|
||||||
dict[-958657434] = { return Api.messages.FeaturedStickers.parse_featuredStickersNotModified($0) }
|
dict[-958657434] = { return Api.messages.FeaturedStickers.parse_featuredStickersNotModified($0) }
|
||||||
dict[-1230257343] = { return Api.messages.FeaturedStickers.parse_featuredStickers($0) }
|
dict[-1230257343] = { return Api.messages.FeaturedStickers.parse_featuredStickers($0) }
|
||||||
|
dict[-318022605] = { return Api.ChatTheme.parse_chatTheme($0) }
|
||||||
dict[-2048646399] = { return Api.PhoneCallDiscardReason.parse_phoneCallDiscardReasonMissed($0) }
|
dict[-2048646399] = { return Api.PhoneCallDiscardReason.parse_phoneCallDiscardReasonMissed($0) }
|
||||||
dict[-527056480] = { return Api.PhoneCallDiscardReason.parse_phoneCallDiscardReasonDisconnect($0) }
|
dict[-527056480] = { return Api.PhoneCallDiscardReason.parse_phoneCallDiscardReasonDisconnect($0) }
|
||||||
dict[1471006352] = { return Api.PhoneCallDiscardReason.parse_phoneCallDiscardReasonHangup($0) }
|
dict[1471006352] = { return Api.PhoneCallDiscardReason.parse_phoneCallDiscardReasonHangup($0) }
|
||||||
@@ -841,6 +844,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|||||||
dict[1991897370] = { return Api.MessageAction.parse_messageActionInviteToGroupCall($0) }
|
dict[1991897370] = { return Api.MessageAction.parse_messageActionInviteToGroupCall($0) }
|
||||||
dict[-1441072131] = { return Api.MessageAction.parse_messageActionSetMessagesTTL($0) }
|
dict[-1441072131] = { return Api.MessageAction.parse_messageActionSetMessagesTTL($0) }
|
||||||
dict[-1281329567] = { return Api.MessageAction.parse_messageActionGroupCallScheduled($0) }
|
dict[-1281329567] = { return Api.MessageAction.parse_messageActionGroupCallScheduled($0) }
|
||||||
|
dict[-1434950843] = { return Api.MessageAction.parse_messageActionSetChatTheme($0) }
|
||||||
dict[1399245077] = { return Api.PhoneCall.parse_phoneCallEmpty($0) }
|
dict[1399245077] = { return Api.PhoneCall.parse_phoneCallEmpty($0) }
|
||||||
dict[462375633] = { return Api.PhoneCall.parse_phoneCallWaiting($0) }
|
dict[462375633] = { return Api.PhoneCall.parse_phoneCallWaiting($0) }
|
||||||
dict[-2014659757] = { return Api.PhoneCall.parse_phoneCallRequested($0) }
|
dict[-2014659757] = { return Api.PhoneCall.parse_phoneCallRequested($0) }
|
||||||
@@ -854,7 +858,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|||||||
dict[1363483106] = { return Api.DialogPeer.parse_dialogPeerFolder($0) }
|
dict[1363483106] = { return Api.DialogPeer.parse_dialogPeerFolder($0) }
|
||||||
dict[475467473] = { return Api.WebDocument.parse_webDocument($0) }
|
dict[475467473] = { return Api.WebDocument.parse_webDocument($0) }
|
||||||
dict[-104284986] = { return Api.WebDocument.parse_webDocumentNoProxy($0) }
|
dict[-104284986] = { return Api.WebDocument.parse_webDocumentNoProxy($0) }
|
||||||
dict[42930452] = { return Api.Theme.parse_theme($0) }
|
dict[-402474788] = { return Api.Theme.parse_theme($0) }
|
||||||
dict[-1290580579] = { return Api.contacts.Found.parse_found($0) }
|
dict[-1290580579] = { return Api.contacts.Found.parse_found($0) }
|
||||||
dict[-368018716] = { return Api.ChannelAdminLogEventsFilter.parse_channelAdminLogEventsFilter($0) }
|
dict[-368018716] = { return Api.ChannelAdminLogEventsFilter.parse_channelAdminLogEventsFilter($0) }
|
||||||
dict[-1917524116] = { return Api.ThemeSettings.parse_themeSettings($0) }
|
dict[-1917524116] = { return Api.ThemeSettings.parse_themeSettings($0) }
|
||||||
@@ -1357,6 +1361,8 @@ public struct Api {
|
|||||||
_1.serialize(buffer, boxed)
|
_1.serialize(buffer, boxed)
|
||||||
case let _1 as Api.StatsDateRangeDays:
|
case let _1 as Api.StatsDateRangeDays:
|
||||||
_1.serialize(buffer, boxed)
|
_1.serialize(buffer, boxed)
|
||||||
|
case let _1 as Api.account.ChatThemes:
|
||||||
|
_1.serialize(buffer, boxed)
|
||||||
case let _1 as Api.messages.AffectedFoundMessages:
|
case let _1 as Api.messages.AffectedFoundMessages:
|
||||||
_1.serialize(buffer, boxed)
|
_1.serialize(buffer, boxed)
|
||||||
case let _1 as Api.BotCommandScope:
|
case let _1 as Api.BotCommandScope:
|
||||||
@@ -1469,6 +1475,8 @@ public struct Api {
|
|||||||
_1.serialize(buffer, boxed)
|
_1.serialize(buffer, boxed)
|
||||||
case let _1 as Api.messages.FeaturedStickers:
|
case let _1 as Api.messages.FeaturedStickers:
|
||||||
_1.serialize(buffer, boxed)
|
_1.serialize(buffer, boxed)
|
||||||
|
case let _1 as Api.ChatTheme:
|
||||||
|
_1.serialize(buffer, boxed)
|
||||||
case let _1 as Api.PhoneCallDiscardReason:
|
case let _1 as Api.PhoneCallDiscardReason:
|
||||||
_1.serialize(buffer, boxed)
|
_1.serialize(buffer, boxed)
|
||||||
case let _1 as Api.NearestDc:
|
case let _1 as Api.NearestDc:
|
||||||
|
|||||||
@@ -160,14 +160,14 @@ public extension Api {
|
|||||||
|
|
||||||
}
|
}
|
||||||
public enum ChatFull: TypeConstructorDescription {
|
public enum ChatFull: TypeConstructorDescription {
|
||||||
case chatFull(flags: Int32, id: Int32, about: String, participants: Api.ChatParticipants, chatPhoto: Api.Photo?, notifySettings: Api.PeerNotifySettings, exportedInvite: Api.ExportedChatInvite?, botInfo: [Api.BotInfo]?, pinnedMsgId: Int32?, folderId: Int32?, call: Api.InputGroupCall?, ttlPeriod: Int32?, groupcallDefaultJoinAs: Api.Peer?)
|
case chatFull(flags: Int32, id: Int32, about: String, participants: Api.ChatParticipants, chatPhoto: Api.Photo?, notifySettings: Api.PeerNotifySettings, exportedInvite: Api.ExportedChatInvite?, botInfo: [Api.BotInfo]?, pinnedMsgId: Int32?, folderId: Int32?, call: Api.InputGroupCall?, ttlPeriod: Int32?, groupcallDefaultJoinAs: Api.Peer?, themeEmoticon: String?)
|
||||||
case channelFull(flags: Int32, id: Int32, about: String, participantsCount: Int32?, adminsCount: Int32?, kickedCount: Int32?, bannedCount: Int32?, onlineCount: Int32?, readInboxMaxId: Int32, readOutboxMaxId: Int32, unreadCount: Int32, chatPhoto: Api.Photo, notifySettings: Api.PeerNotifySettings, exportedInvite: Api.ExportedChatInvite?, botInfo: [Api.BotInfo], migratedFromChatId: Int32?, migratedFromMaxId: Int32?, pinnedMsgId: Int32?, stickerset: Api.StickerSet?, availableMinId: Int32?, folderId: Int32?, linkedChatId: Int32?, location: Api.ChannelLocation?, slowmodeSeconds: Int32?, slowmodeNextSendDate: Int32?, statsDc: Int32?, pts: Int32, call: Api.InputGroupCall?, ttlPeriod: Int32?, pendingSuggestions: [String]?, groupcallDefaultJoinAs: Api.Peer?)
|
case channelFull(flags: Int32, id: Int32, about: String, participantsCount: Int32?, adminsCount: Int32?, kickedCount: Int32?, bannedCount: Int32?, onlineCount: Int32?, readInboxMaxId: Int32, readOutboxMaxId: Int32, unreadCount: Int32, chatPhoto: Api.Photo, notifySettings: Api.PeerNotifySettings, exportedInvite: Api.ExportedChatInvite?, botInfo: [Api.BotInfo], migratedFromChatId: Int32?, migratedFromMaxId: Int32?, pinnedMsgId: Int32?, stickerset: Api.StickerSet?, availableMinId: Int32?, folderId: Int32?, linkedChatId: Int32?, location: Api.ChannelLocation?, slowmodeSeconds: Int32?, slowmodeNextSendDate: Int32?, statsDc: Int32?, pts: Int32, call: Api.InputGroupCall?, ttlPeriod: Int32?, pendingSuggestions: [String]?, groupcallDefaultJoinAs: Api.Peer?, themeEmoticon: String?)
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
switch self {
|
switch self {
|
||||||
case .chatFull(let flags, let id, let about, let participants, let chatPhoto, let notifySettings, let exportedInvite, let botInfo, let pinnedMsgId, let folderId, let call, let ttlPeriod, let groupcallDefaultJoinAs):
|
case .chatFull(let flags, let id, let about, let participants, let chatPhoto, let notifySettings, let exportedInvite, let botInfo, let pinnedMsgId, let folderId, let call, let ttlPeriod, let groupcallDefaultJoinAs, let themeEmoticon):
|
||||||
if boxed {
|
if boxed {
|
||||||
buffer.appendInt32(-1977734781)
|
buffer.appendInt32(1235264985)
|
||||||
}
|
}
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
serializeInt32(id, buffer: buffer, boxed: false)
|
serializeInt32(id, buffer: buffer, boxed: false)
|
||||||
@@ -186,10 +186,11 @@ public extension Api {
|
|||||||
if Int(flags) & Int(1 << 12) != 0 {call!.serialize(buffer, true)}
|
if Int(flags) & Int(1 << 12) != 0 {call!.serialize(buffer, true)}
|
||||||
if Int(flags) & Int(1 << 14) != 0 {serializeInt32(ttlPeriod!, buffer: buffer, boxed: false)}
|
if Int(flags) & Int(1 << 14) != 0 {serializeInt32(ttlPeriod!, buffer: buffer, boxed: false)}
|
||||||
if Int(flags) & Int(1 << 15) != 0 {groupcallDefaultJoinAs!.serialize(buffer, true)}
|
if Int(flags) & Int(1 << 15) != 0 {groupcallDefaultJoinAs!.serialize(buffer, true)}
|
||||||
|
if Int(flags) & Int(1 << 16) != 0 {serializeString(themeEmoticon!, buffer: buffer, boxed: false)}
|
||||||
break
|
break
|
||||||
case .channelFull(let flags, let id, let about, let participantsCount, let adminsCount, let kickedCount, let bannedCount, let onlineCount, let readInboxMaxId, let readOutboxMaxId, let unreadCount, let chatPhoto, let notifySettings, let exportedInvite, let botInfo, let migratedFromChatId, let migratedFromMaxId, let pinnedMsgId, let stickerset, let availableMinId, let folderId, let linkedChatId, let location, let slowmodeSeconds, let slowmodeNextSendDate, let statsDc, let pts, let call, let ttlPeriod, let pendingSuggestions, let groupcallDefaultJoinAs):
|
case .channelFull(let flags, let id, let about, let participantsCount, let adminsCount, let kickedCount, let bannedCount, let onlineCount, let readInboxMaxId, let readOutboxMaxId, let unreadCount, let chatPhoto, let notifySettings, let exportedInvite, let botInfo, let migratedFromChatId, let migratedFromMaxId, let pinnedMsgId, let stickerset, let availableMinId, let folderId, let linkedChatId, let location, let slowmodeSeconds, let slowmodeNextSendDate, let statsDc, let pts, let call, let ttlPeriod, let pendingSuggestions, let groupcallDefaultJoinAs, let themeEmoticon):
|
||||||
if boxed {
|
if boxed {
|
||||||
buffer.appendInt32(1418477459)
|
buffer.appendInt32(793980732)
|
||||||
}
|
}
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
serializeInt32(id, buffer: buffer, boxed: false)
|
serializeInt32(id, buffer: buffer, boxed: false)
|
||||||
@@ -230,16 +231,17 @@ public extension Api {
|
|||||||
serializeString(item, buffer: buffer, boxed: false)
|
serializeString(item, buffer: buffer, boxed: false)
|
||||||
}}
|
}}
|
||||||
if Int(flags) & Int(1 << 26) != 0 {groupcallDefaultJoinAs!.serialize(buffer, true)}
|
if Int(flags) & Int(1 << 26) != 0 {groupcallDefaultJoinAs!.serialize(buffer, true)}
|
||||||
|
if Int(flags) & Int(1 << 27) != 0 {serializeString(themeEmoticon!, buffer: buffer, boxed: false)}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public func descriptionFields() -> (String, [(String, Any)]) {
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
switch self {
|
switch self {
|
||||||
case .chatFull(let flags, let id, let about, let participants, let chatPhoto, let notifySettings, let exportedInvite, let botInfo, let pinnedMsgId, let folderId, let call, let ttlPeriod, let groupcallDefaultJoinAs):
|
case .chatFull(let flags, let id, let about, let participants, let chatPhoto, let notifySettings, let exportedInvite, let botInfo, let pinnedMsgId, let folderId, let call, let ttlPeriod, let groupcallDefaultJoinAs, let themeEmoticon):
|
||||||
return ("chatFull", [("flags", flags), ("id", id), ("about", about), ("participants", participants), ("chatPhoto", chatPhoto), ("notifySettings", notifySettings), ("exportedInvite", exportedInvite), ("botInfo", botInfo), ("pinnedMsgId", pinnedMsgId), ("folderId", folderId), ("call", call), ("ttlPeriod", ttlPeriod), ("groupcallDefaultJoinAs", groupcallDefaultJoinAs)])
|
return ("chatFull", [("flags", flags), ("id", id), ("about", about), ("participants", participants), ("chatPhoto", chatPhoto), ("notifySettings", notifySettings), ("exportedInvite", exportedInvite), ("botInfo", botInfo), ("pinnedMsgId", pinnedMsgId), ("folderId", folderId), ("call", call), ("ttlPeriod", ttlPeriod), ("groupcallDefaultJoinAs", groupcallDefaultJoinAs), ("themeEmoticon", themeEmoticon)])
|
||||||
case .channelFull(let flags, let id, let about, let participantsCount, let adminsCount, let kickedCount, let bannedCount, let onlineCount, let readInboxMaxId, let readOutboxMaxId, let unreadCount, let chatPhoto, let notifySettings, let exportedInvite, let botInfo, let migratedFromChatId, let migratedFromMaxId, let pinnedMsgId, let stickerset, let availableMinId, let folderId, let linkedChatId, let location, let slowmodeSeconds, let slowmodeNextSendDate, let statsDc, let pts, let call, let ttlPeriod, let pendingSuggestions, let groupcallDefaultJoinAs):
|
case .channelFull(let flags, let id, let about, let participantsCount, let adminsCount, let kickedCount, let bannedCount, let onlineCount, let readInboxMaxId, let readOutboxMaxId, let unreadCount, let chatPhoto, let notifySettings, let exportedInvite, let botInfo, let migratedFromChatId, let migratedFromMaxId, let pinnedMsgId, let stickerset, let availableMinId, let folderId, let linkedChatId, let location, let slowmodeSeconds, let slowmodeNextSendDate, let statsDc, let pts, let call, let ttlPeriod, let pendingSuggestions, let groupcallDefaultJoinAs, let themeEmoticon):
|
||||||
return ("channelFull", [("flags", flags), ("id", id), ("about", about), ("participantsCount", participantsCount), ("adminsCount", adminsCount), ("kickedCount", kickedCount), ("bannedCount", bannedCount), ("onlineCount", onlineCount), ("readInboxMaxId", readInboxMaxId), ("readOutboxMaxId", readOutboxMaxId), ("unreadCount", unreadCount), ("chatPhoto", chatPhoto), ("notifySettings", notifySettings), ("exportedInvite", exportedInvite), ("botInfo", botInfo), ("migratedFromChatId", migratedFromChatId), ("migratedFromMaxId", migratedFromMaxId), ("pinnedMsgId", pinnedMsgId), ("stickerset", stickerset), ("availableMinId", availableMinId), ("folderId", folderId), ("linkedChatId", linkedChatId), ("location", location), ("slowmodeSeconds", slowmodeSeconds), ("slowmodeNextSendDate", slowmodeNextSendDate), ("statsDc", statsDc), ("pts", pts), ("call", call), ("ttlPeriod", ttlPeriod), ("pendingSuggestions", pendingSuggestions), ("groupcallDefaultJoinAs", groupcallDefaultJoinAs)])
|
return ("channelFull", [("flags", flags), ("id", id), ("about", about), ("participantsCount", participantsCount), ("adminsCount", adminsCount), ("kickedCount", kickedCount), ("bannedCount", bannedCount), ("onlineCount", onlineCount), ("readInboxMaxId", readInboxMaxId), ("readOutboxMaxId", readOutboxMaxId), ("unreadCount", unreadCount), ("chatPhoto", chatPhoto), ("notifySettings", notifySettings), ("exportedInvite", exportedInvite), ("botInfo", botInfo), ("migratedFromChatId", migratedFromChatId), ("migratedFromMaxId", migratedFromMaxId), ("pinnedMsgId", pinnedMsgId), ("stickerset", stickerset), ("availableMinId", availableMinId), ("folderId", folderId), ("linkedChatId", linkedChatId), ("location", location), ("slowmodeSeconds", slowmodeSeconds), ("slowmodeNextSendDate", slowmodeNextSendDate), ("statsDc", statsDc), ("pts", pts), ("call", call), ("ttlPeriod", ttlPeriod), ("pendingSuggestions", pendingSuggestions), ("groupcallDefaultJoinAs", groupcallDefaultJoinAs), ("themeEmoticon", themeEmoticon)])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -284,6 +286,8 @@ public extension Api {
|
|||||||
if Int(_1!) & Int(1 << 15) != 0 {if let signature = reader.readInt32() {
|
if Int(_1!) & Int(1 << 15) != 0 {if let signature = reader.readInt32() {
|
||||||
_13 = Api.parse(reader, signature: signature) as? Api.Peer
|
_13 = Api.parse(reader, signature: signature) as? Api.Peer
|
||||||
} }
|
} }
|
||||||
|
var _14: String?
|
||||||
|
if Int(_1!) & Int(1 << 16) != 0 {_14 = parseString(reader) }
|
||||||
let _c1 = _1 != nil
|
let _c1 = _1 != nil
|
||||||
let _c2 = _2 != nil
|
let _c2 = _2 != nil
|
||||||
let _c3 = _3 != nil
|
let _c3 = _3 != nil
|
||||||
@@ -297,8 +301,9 @@ public extension Api {
|
|||||||
let _c11 = (Int(_1!) & Int(1 << 12) == 0) || _11 != nil
|
let _c11 = (Int(_1!) & Int(1 << 12) == 0) || _11 != nil
|
||||||
let _c12 = (Int(_1!) & Int(1 << 14) == 0) || _12 != nil
|
let _c12 = (Int(_1!) & Int(1 << 14) == 0) || _12 != nil
|
||||||
let _c13 = (Int(_1!) & Int(1 << 15) == 0) || _13 != nil
|
let _c13 = (Int(_1!) & Int(1 << 15) == 0) || _13 != nil
|
||||||
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 && _c11 && _c12 && _c13 {
|
let _c14 = (Int(_1!) & Int(1 << 16) == 0) || _14 != nil
|
||||||
return Api.ChatFull.chatFull(flags: _1!, id: _2!, about: _3!, participants: _4!, chatPhoto: _5, notifySettings: _6!, exportedInvite: _7, botInfo: _8, pinnedMsgId: _9, folderId: _10, call: _11, ttlPeriod: _12, groupcallDefaultJoinAs: _13)
|
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 && _c11 && _c12 && _c13 && _c14 {
|
||||||
|
return Api.ChatFull.chatFull(flags: _1!, id: _2!, about: _3!, participants: _4!, chatPhoto: _5, notifySettings: _6!, exportedInvite: _7, botInfo: _8, pinnedMsgId: _9, folderId: _10, call: _11, ttlPeriod: _12, groupcallDefaultJoinAs: _13, themeEmoticon: _14)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return nil
|
return nil
|
||||||
@@ -385,6 +390,8 @@ public extension Api {
|
|||||||
if Int(_1!) & Int(1 << 26) != 0 {if let signature = reader.readInt32() {
|
if Int(_1!) & Int(1 << 26) != 0 {if let signature = reader.readInt32() {
|
||||||
_31 = Api.parse(reader, signature: signature) as? Api.Peer
|
_31 = Api.parse(reader, signature: signature) as? Api.Peer
|
||||||
} }
|
} }
|
||||||
|
var _32: String?
|
||||||
|
if Int(_1!) & Int(1 << 27) != 0 {_32 = parseString(reader) }
|
||||||
let _c1 = _1 != nil
|
let _c1 = _1 != nil
|
||||||
let _c2 = _2 != nil
|
let _c2 = _2 != nil
|
||||||
let _c3 = _3 != nil
|
let _c3 = _3 != nil
|
||||||
@@ -416,8 +423,9 @@ public extension Api {
|
|||||||
let _c29 = (Int(_1!) & Int(1 << 24) == 0) || _29 != nil
|
let _c29 = (Int(_1!) & Int(1 << 24) == 0) || _29 != nil
|
||||||
let _c30 = (Int(_1!) & Int(1 << 25) == 0) || _30 != nil
|
let _c30 = (Int(_1!) & Int(1 << 25) == 0) || _30 != nil
|
||||||
let _c31 = (Int(_1!) & Int(1 << 26) == 0) || _31 != nil
|
let _c31 = (Int(_1!) & Int(1 << 26) == 0) || _31 != nil
|
||||||
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 && _c11 && _c12 && _c13 && _c14 && _c15 && _c16 && _c17 && _c18 && _c19 && _c20 && _c21 && _c22 && _c23 && _c24 && _c25 && _c26 && _c27 && _c28 && _c29 && _c30 && _c31 {
|
let _c32 = (Int(_1!) & Int(1 << 27) == 0) || _32 != nil
|
||||||
return Api.ChatFull.channelFull(flags: _1!, id: _2!, about: _3!, participantsCount: _4, adminsCount: _5, kickedCount: _6, bannedCount: _7, onlineCount: _8, readInboxMaxId: _9!, readOutboxMaxId: _10!, unreadCount: _11!, chatPhoto: _12!, notifySettings: _13!, exportedInvite: _14, botInfo: _15!, migratedFromChatId: _16, migratedFromMaxId: _17, pinnedMsgId: _18, stickerset: _19, availableMinId: _20, folderId: _21, linkedChatId: _22, location: _23, slowmodeSeconds: _24, slowmodeNextSendDate: _25, statsDc: _26, pts: _27!, call: _28, ttlPeriod: _29, pendingSuggestions: _30, groupcallDefaultJoinAs: _31)
|
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 && _c11 && _c12 && _c13 && _c14 && _c15 && _c16 && _c17 && _c18 && _c19 && _c20 && _c21 && _c22 && _c23 && _c24 && _c25 && _c26 && _c27 && _c28 && _c29 && _c30 && _c31 && _c32 {
|
||||||
|
return Api.ChatFull.channelFull(flags: _1!, id: _2!, about: _3!, participantsCount: _4, adminsCount: _5, kickedCount: _6, bannedCount: _7, onlineCount: _8, readInboxMaxId: _9!, readOutboxMaxId: _10!, unreadCount: _11!, chatPhoto: _12!, notifySettings: _13!, exportedInvite: _14, botInfo: _15!, migratedFromChatId: _16, migratedFromMaxId: _17, pinnedMsgId: _18, stickerset: _19, availableMinId: _20, folderId: _21, linkedChatId: _22, location: _23, slowmodeSeconds: _24, slowmodeNextSendDate: _25, statsDc: _26, pts: _27!, call: _28, ttlPeriod: _29, pendingSuggestions: _30, groupcallDefaultJoinAs: _31, themeEmoticon: _32)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return nil
|
return nil
|
||||||
@@ -2882,13 +2890,13 @@ public extension Api {
|
|||||||
|
|
||||||
}
|
}
|
||||||
public enum UserFull: TypeConstructorDescription {
|
public enum UserFull: TypeConstructorDescription {
|
||||||
case userFull(flags: Int32, user: Api.User, about: String?, settings: Api.PeerSettings, profilePhoto: Api.Photo?, notifySettings: Api.PeerNotifySettings, botInfo: Api.BotInfo?, pinnedMsgId: Int32?, commonChatsCount: Int32, folderId: Int32?, ttlPeriod: Int32?)
|
case userFull(flags: Int32, user: Api.User, about: String?, settings: Api.PeerSettings, profilePhoto: Api.Photo?, notifySettings: Api.PeerNotifySettings, botInfo: Api.BotInfo?, pinnedMsgId: Int32?, commonChatsCount: Int32, folderId: Int32?, ttlPeriod: Int32?, themeEmoticon: String?)
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
switch self {
|
switch self {
|
||||||
case .userFull(let flags, let user, let about, let settings, let profilePhoto, let notifySettings, let botInfo, let pinnedMsgId, let commonChatsCount, let folderId, let ttlPeriod):
|
case .userFull(let flags, let user, let about, let settings, let profilePhoto, let notifySettings, let botInfo, let pinnedMsgId, let commonChatsCount, let folderId, let ttlPeriod, let themeEmoticon):
|
||||||
if boxed {
|
if boxed {
|
||||||
buffer.appendInt32(328899191)
|
buffer.appendInt32(-694681851)
|
||||||
}
|
}
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
user.serialize(buffer, true)
|
user.serialize(buffer, true)
|
||||||
@@ -2901,14 +2909,15 @@ public extension Api {
|
|||||||
serializeInt32(commonChatsCount, buffer: buffer, boxed: false)
|
serializeInt32(commonChatsCount, buffer: buffer, boxed: false)
|
||||||
if Int(flags) & Int(1 << 11) != 0 {serializeInt32(folderId!, buffer: buffer, boxed: false)}
|
if Int(flags) & Int(1 << 11) != 0 {serializeInt32(folderId!, buffer: buffer, boxed: false)}
|
||||||
if Int(flags) & Int(1 << 14) != 0 {serializeInt32(ttlPeriod!, buffer: buffer, boxed: false)}
|
if Int(flags) & Int(1 << 14) != 0 {serializeInt32(ttlPeriod!, buffer: buffer, boxed: false)}
|
||||||
|
if Int(flags) & Int(1 << 15) != 0 {serializeString(themeEmoticon!, buffer: buffer, boxed: false)}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public func descriptionFields() -> (String, [(String, Any)]) {
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
switch self {
|
switch self {
|
||||||
case .userFull(let flags, let user, let about, let settings, let profilePhoto, let notifySettings, let botInfo, let pinnedMsgId, let commonChatsCount, let folderId, let ttlPeriod):
|
case .userFull(let flags, let user, let about, let settings, let profilePhoto, let notifySettings, let botInfo, let pinnedMsgId, let commonChatsCount, let folderId, let ttlPeriod, let themeEmoticon):
|
||||||
return ("userFull", [("flags", flags), ("user", user), ("about", about), ("settings", settings), ("profilePhoto", profilePhoto), ("notifySettings", notifySettings), ("botInfo", botInfo), ("pinnedMsgId", pinnedMsgId), ("commonChatsCount", commonChatsCount), ("folderId", folderId), ("ttlPeriod", ttlPeriod)])
|
return ("userFull", [("flags", flags), ("user", user), ("about", about), ("settings", settings), ("profilePhoto", profilePhoto), ("notifySettings", notifySettings), ("botInfo", botInfo), ("pinnedMsgId", pinnedMsgId), ("commonChatsCount", commonChatsCount), ("folderId", folderId), ("ttlPeriod", ttlPeriod), ("themeEmoticon", themeEmoticon)])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2945,6 +2954,8 @@ public extension Api {
|
|||||||
if Int(_1!) & Int(1 << 11) != 0 {_10 = reader.readInt32() }
|
if Int(_1!) & Int(1 << 11) != 0 {_10 = reader.readInt32() }
|
||||||
var _11: Int32?
|
var _11: Int32?
|
||||||
if Int(_1!) & Int(1 << 14) != 0 {_11 = reader.readInt32() }
|
if Int(_1!) & Int(1 << 14) != 0 {_11 = reader.readInt32() }
|
||||||
|
var _12: String?
|
||||||
|
if Int(_1!) & Int(1 << 15) != 0 {_12 = parseString(reader) }
|
||||||
let _c1 = _1 != nil
|
let _c1 = _1 != nil
|
||||||
let _c2 = _2 != nil
|
let _c2 = _2 != nil
|
||||||
let _c3 = (Int(_1!) & Int(1 << 1) == 0) || _3 != nil
|
let _c3 = (Int(_1!) & Int(1 << 1) == 0) || _3 != nil
|
||||||
@@ -2956,8 +2967,9 @@ public extension Api {
|
|||||||
let _c9 = _9 != nil
|
let _c9 = _9 != nil
|
||||||
let _c10 = (Int(_1!) & Int(1 << 11) == 0) || _10 != nil
|
let _c10 = (Int(_1!) & Int(1 << 11) == 0) || _10 != nil
|
||||||
let _c11 = (Int(_1!) & Int(1 << 14) == 0) || _11 != nil
|
let _c11 = (Int(_1!) & Int(1 << 14) == 0) || _11 != nil
|
||||||
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 && _c11 {
|
let _c12 = (Int(_1!) & Int(1 << 15) == 0) || _12 != nil
|
||||||
return Api.UserFull.userFull(flags: _1!, user: _2!, about: _3, settings: _4!, profilePhoto: _5, notifySettings: _6!, botInfo: _7, pinnedMsgId: _8, commonChatsCount: _9!, folderId: _10, ttlPeriod: _11)
|
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 && _c11 && _c12 {
|
||||||
|
return Api.UserFull.userFull(flags: _1!, user: _2!, about: _3, settings: _4!, profilePhoto: _5, notifySettings: _6!, botInfo: _7, pinnedMsgId: _8, commonChatsCount: _9!, folderId: _10, ttlPeriod: _11, themeEmoticon: _12)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return nil
|
return nil
|
||||||
@@ -18574,6 +18586,52 @@ public extension Api {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public enum ChatTheme: TypeConstructorDescription {
|
||||||
|
case chatTheme(emoticon: String, theme: Api.Theme, darkTheme: Api.Theme)
|
||||||
|
|
||||||
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
|
switch self {
|
||||||
|
case .chatTheme(let emoticon, let theme, let darkTheme):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(-318022605)
|
||||||
|
}
|
||||||
|
serializeString(emoticon, buffer: buffer, boxed: false)
|
||||||
|
theme.serialize(buffer, true)
|
||||||
|
darkTheme.serialize(buffer, true)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
|
switch self {
|
||||||
|
case .chatTheme(let emoticon, let theme, let darkTheme):
|
||||||
|
return ("chatTheme", [("emoticon", emoticon), ("theme", theme), ("darkTheme", darkTheme)])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func parse_chatTheme(_ reader: BufferReader) -> ChatTheme? {
|
||||||
|
var _1: String?
|
||||||
|
_1 = parseString(reader)
|
||||||
|
var _2: Api.Theme?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_2 = Api.parse(reader, signature: signature) as? Api.Theme
|
||||||
|
}
|
||||||
|
var _3: Api.Theme?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_3 = Api.parse(reader, signature: signature) as? Api.Theme
|
||||||
|
}
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = _3 != nil
|
||||||
|
if _c1 && _c2 && _c3 {
|
||||||
|
return Api.ChatTheme.chatTheme(emoticon: _1!, theme: _2!, darkTheme: _3!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public enum PhoneCallDiscardReason: TypeConstructorDescription {
|
public enum PhoneCallDiscardReason: TypeConstructorDescription {
|
||||||
case phoneCallDiscardReasonMissed
|
case phoneCallDiscardReasonMissed
|
||||||
@@ -20782,6 +20840,7 @@ public extension Api {
|
|||||||
case messageActionInviteToGroupCall(call: Api.InputGroupCall, users: [Int32])
|
case messageActionInviteToGroupCall(call: Api.InputGroupCall, users: [Int32])
|
||||||
case messageActionSetMessagesTTL(period: Int32)
|
case messageActionSetMessagesTTL(period: Int32)
|
||||||
case messageActionGroupCallScheduled(call: Api.InputGroupCall, scheduleDate: Int32)
|
case messageActionGroupCallScheduled(call: Api.InputGroupCall, scheduleDate: Int32)
|
||||||
|
case messageActionSetChatTheme(emoticon: String)
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
switch self {
|
switch self {
|
||||||
@@ -20993,6 +21052,12 @@ public extension Api {
|
|||||||
call.serialize(buffer, true)
|
call.serialize(buffer, true)
|
||||||
serializeInt32(scheduleDate, buffer: buffer, boxed: false)
|
serializeInt32(scheduleDate, buffer: buffer, boxed: false)
|
||||||
break
|
break
|
||||||
|
case .messageActionSetChatTheme(let emoticon):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(-1434950843)
|
||||||
|
}
|
||||||
|
serializeString(emoticon, buffer: buffer, boxed: false)
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21054,6 +21119,8 @@ public extension Api {
|
|||||||
return ("messageActionSetMessagesTTL", [("period", period)])
|
return ("messageActionSetMessagesTTL", [("period", period)])
|
||||||
case .messageActionGroupCallScheduled(let call, let scheduleDate):
|
case .messageActionGroupCallScheduled(let call, let scheduleDate):
|
||||||
return ("messageActionGroupCallScheduled", [("call", call), ("scheduleDate", scheduleDate)])
|
return ("messageActionGroupCallScheduled", [("call", call), ("scheduleDate", scheduleDate)])
|
||||||
|
case .messageActionSetChatTheme(let emoticon):
|
||||||
|
return ("messageActionSetChatTheme", [("emoticon", emoticon)])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21407,6 +21474,17 @@ public extension Api {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public static func parse_messageActionSetChatTheme(_ reader: BufferReader) -> MessageAction? {
|
||||||
|
var _1: String?
|
||||||
|
_1 = parseString(reader)
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
if _c1 {
|
||||||
|
return Api.MessageAction.messageActionSetChatTheme(emoticon: _1!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public enum PhoneCall: TypeConstructorDescription {
|
public enum PhoneCall: TypeConstructorDescription {
|
||||||
@@ -21846,13 +21924,13 @@ public extension Api {
|
|||||||
|
|
||||||
}
|
}
|
||||||
public enum Theme: TypeConstructorDescription {
|
public enum Theme: TypeConstructorDescription {
|
||||||
case theme(flags: Int32, id: Int64, accessHash: Int64, slug: String, title: String, document: Api.Document?, settings: Api.ThemeSettings?, installsCount: Int32)
|
case theme(flags: Int32, id: Int64, accessHash: Int64, slug: String, title: String, document: Api.Document?, settings: Api.ThemeSettings?, installsCount: Int32?)
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
switch self {
|
switch self {
|
||||||
case .theme(let flags, let id, let accessHash, let slug, let title, let document, let settings, let installsCount):
|
case .theme(let flags, let id, let accessHash, let slug, let title, let document, let settings, let installsCount):
|
||||||
if boxed {
|
if boxed {
|
||||||
buffer.appendInt32(42930452)
|
buffer.appendInt32(-402474788)
|
||||||
}
|
}
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
serializeInt64(id, buffer: buffer, boxed: false)
|
serializeInt64(id, buffer: buffer, boxed: false)
|
||||||
@@ -21861,7 +21939,7 @@ public extension Api {
|
|||||||
serializeString(title, buffer: buffer, boxed: false)
|
serializeString(title, buffer: buffer, boxed: false)
|
||||||
if Int(flags) & Int(1 << 2) != 0 {document!.serialize(buffer, true)}
|
if Int(flags) & Int(1 << 2) != 0 {document!.serialize(buffer, true)}
|
||||||
if Int(flags) & Int(1 << 3) != 0 {settings!.serialize(buffer, true)}
|
if Int(flags) & Int(1 << 3) != 0 {settings!.serialize(buffer, true)}
|
||||||
serializeInt32(installsCount, buffer: buffer, boxed: false)
|
if Int(flags) & Int(1 << 4) != 0 {serializeInt32(installsCount!, buffer: buffer, boxed: false)}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -21893,7 +21971,7 @@ public extension Api {
|
|||||||
_7 = Api.parse(reader, signature: signature) as? Api.ThemeSettings
|
_7 = Api.parse(reader, signature: signature) as? Api.ThemeSettings
|
||||||
} }
|
} }
|
||||||
var _8: Int32?
|
var _8: Int32?
|
||||||
_8 = reader.readInt32()
|
if Int(_1!) & Int(1 << 4) != 0 {_8 = reader.readInt32() }
|
||||||
let _c1 = _1 != nil
|
let _c1 = _1 != nil
|
||||||
let _c2 = _2 != nil
|
let _c2 = _2 != nil
|
||||||
let _c3 = _3 != nil
|
let _c3 = _3 != nil
|
||||||
@@ -21901,9 +21979,9 @@ public extension Api {
|
|||||||
let _c5 = _5 != nil
|
let _c5 = _5 != nil
|
||||||
let _c6 = (Int(_1!) & Int(1 << 2) == 0) || _6 != nil
|
let _c6 = (Int(_1!) & Int(1 << 2) == 0) || _6 != nil
|
||||||
let _c7 = (Int(_1!) & Int(1 << 3) == 0) || _7 != nil
|
let _c7 = (Int(_1!) & Int(1 << 3) == 0) || _7 != nil
|
||||||
let _c8 = _8 != nil
|
let _c8 = (Int(_1!) & Int(1 << 4) == 0) || _8 != nil
|
||||||
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 {
|
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 {
|
||||||
return Api.Theme.theme(flags: _1!, id: _2!, accessHash: _3!, slug: _4!, title: _5!, document: _6, settings: _7, installsCount: _8!)
|
return Api.Theme.theme(flags: _1!, id: _2!, accessHash: _3!, slug: _4!, title: _5!, document: _6, settings: _7, installsCount: _8)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -1271,6 +1271,62 @@ public struct account {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public enum ChatThemes: TypeConstructorDescription {
|
||||||
|
case chatThemesNotModified
|
||||||
|
case chatThemes(hash: Int32, themes: [Api.ChatTheme])
|
||||||
|
|
||||||
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
|
switch self {
|
||||||
|
case .chatThemesNotModified:
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(-535699004)
|
||||||
|
}
|
||||||
|
|
||||||
|
break
|
||||||
|
case .chatThemes(let hash, let themes):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(-28524867)
|
||||||
|
}
|
||||||
|
serializeInt32(hash, buffer: buffer, boxed: false)
|
||||||
|
buffer.appendInt32(481674261)
|
||||||
|
buffer.appendInt32(Int32(themes.count))
|
||||||
|
for item in themes {
|
||||||
|
item.serialize(buffer, true)
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
|
switch self {
|
||||||
|
case .chatThemesNotModified:
|
||||||
|
return ("chatThemesNotModified", [])
|
||||||
|
case .chatThemes(let hash, let themes):
|
||||||
|
return ("chatThemes", [("hash", hash), ("themes", themes)])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func parse_chatThemesNotModified(_ reader: BufferReader) -> ChatThemes? {
|
||||||
|
return Api.account.ChatThemes.chatThemesNotModified
|
||||||
|
}
|
||||||
|
public static func parse_chatThemes(_ reader: BufferReader) -> ChatThemes? {
|
||||||
|
var _1: Int32?
|
||||||
|
_1 = reader.readInt32()
|
||||||
|
var _2: [Api.ChatTheme]?
|
||||||
|
if let _ = reader.readInt32() {
|
||||||
|
_2 = Api.parseVector(reader, elementSignature: 0, elementType: Api.ChatTheme.self)
|
||||||
|
}
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
if _c1 && _c2 {
|
||||||
|
return Api.account.ChatThemes.chatThemes(hash: _1!, themes: _2!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public enum Authorizations: TypeConstructorDescription {
|
public enum Authorizations: TypeConstructorDescription {
|
||||||
case authorizations(authorizations: [Api.Authorization])
|
case authorizations(authorizations: [Api.Authorization])
|
||||||
@@ -4376,6 +4432,21 @@ public extension Api {
|
|||||||
return result
|
return result
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static func setChatTheme(peer: Api.InputPeer, emoticon: String) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Updates>) {
|
||||||
|
let buffer = Buffer()
|
||||||
|
buffer.appendInt32(-432283329)
|
||||||
|
peer.serialize(buffer, true)
|
||||||
|
serializeString(emoticon, buffer: buffer, boxed: false)
|
||||||
|
return (FunctionDescription(name: "messages.setChatTheme", parameters: [("peer", peer), ("emoticon", emoticon)]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.Updates? in
|
||||||
|
let reader = BufferReader(buffer)
|
||||||
|
var result: Api.Updates?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
result = Api.parse(reader, signature: signature) as? Api.Updates
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public struct channels {
|
public struct channels {
|
||||||
public static func readHistory(channel: Api.InputChannel, maxId: Int32) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Bool>) {
|
public static func readHistory(channel: Api.InputChannel, maxId: Int32) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Bool>) {
|
||||||
@@ -7616,6 +7687,20 @@ public extension Api {
|
|||||||
return result
|
return result
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static func getChatThemes(hash: Int32) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.account.ChatThemes>) {
|
||||||
|
let buffer = Buffer()
|
||||||
|
buffer.appendInt32(-690545285)
|
||||||
|
serializeInt32(hash, buffer: buffer, boxed: false)
|
||||||
|
return (FunctionDescription(name: "account.getChatThemes", parameters: [("hash", hash)]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.account.ChatThemes? in
|
||||||
|
let reader = BufferReader(buffer)
|
||||||
|
var result: Api.account.ChatThemes?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
result = Api.parse(reader, signature: signature) as? Api.account.ChatThemes
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public struct langpack {
|
public struct langpack {
|
||||||
public static func getLangPack(langPack: String, langCode: String) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.LangPackDifference>) {
|
public static func getLangPack(langPack: String, langCode: String) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.LangPackDifference>) {
|
||||||
|
|||||||
@@ -195,7 +195,7 @@ func apiMessagePeerIds(_ message: Api.Message) -> [PeerId] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch action {
|
switch action {
|
||||||
case .messageActionChannelCreate, .messageActionChatDeletePhoto, .messageActionChatEditPhoto, .messageActionChatEditTitle, .messageActionEmpty, .messageActionPinMessage, .messageActionHistoryClear, .messageActionGameScore, .messageActionPaymentSent, .messageActionPaymentSentMe, .messageActionPhoneCall, .messageActionScreenshotTaken, .messageActionCustomAction, .messageActionBotAllowed, .messageActionSecureValuesSent, .messageActionSecureValuesSentMe, .messageActionContactSignUp, .messageActionGroupCall, .messageActionSetMessagesTTL, .messageActionGroupCallScheduled:
|
case .messageActionChannelCreate, .messageActionChatDeletePhoto, .messageActionChatEditPhoto, .messageActionChatEditTitle, .messageActionEmpty, .messageActionPinMessage, .messageActionHistoryClear, .messageActionGameScore, .messageActionPaymentSent, .messageActionPaymentSentMe, .messageActionPhoneCall, .messageActionScreenshotTaken, .messageActionCustomAction, .messageActionBotAllowed, .messageActionSecureValuesSent, .messageActionSecureValuesSentMe, .messageActionContactSignUp, .messageActionGroupCall, .messageActionSetMessagesTTL, .messageActionGroupCallScheduled, .messageActionSetChatTheme:
|
||||||
break
|
break
|
||||||
case let .messageActionChannelMigrateFrom(_, chatId):
|
case let .messageActionChannelMigrateFrom(_, chatId):
|
||||||
result.append(PeerId(namespace: Namespaces.Peer.CloudGroup, id: PeerId.Id._internalFromInt32Value(chatId)))
|
result.append(PeerId(namespace: Namespaces.Peer.CloudGroup, id: PeerId.Id._internalFromInt32Value(chatId)))
|
||||||
|
|||||||
@@ -77,6 +77,8 @@ func telegramMediaActionFromApiAction(_ action: Api.MessageAction) -> TelegramMe
|
|||||||
case let .inputGroupCall(id, accessHash):
|
case let .inputGroupCall(id, accessHash):
|
||||||
return TelegramMediaAction(action: .groupPhoneCall(callId: id, accessHash: accessHash, scheduleDate: scheduleDate, duration: nil))
|
return TelegramMediaAction(action: .groupPhoneCall(callId: id, accessHash: accessHash, scheduleDate: scheduleDate, duration: nil))
|
||||||
}
|
}
|
||||||
|
case .messageActionSetChatTheme:
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -79,9 +79,9 @@ public final class TelegramTheme: OrderedItemListEntryContents, Equatable {
|
|||||||
public let settings: TelegramThemeSettings?
|
public let settings: TelegramThemeSettings?
|
||||||
public let isCreator: Bool
|
public let isCreator: Bool
|
||||||
public let isDefault: Bool
|
public let isDefault: Bool
|
||||||
public let installCount: Int32
|
public let installCount: Int32?
|
||||||
|
|
||||||
public init(id: Int64, accessHash: Int64, slug: String, title: String, file: TelegramMediaFile?, settings: TelegramThemeSettings?, isCreator: Bool, isDefault: Bool, installCount: Int32) {
|
public init(id: Int64, accessHash: Int64, slug: String, title: String, file: TelegramMediaFile?, settings: TelegramThemeSettings?, isCreator: Bool, isDefault: Bool, installCount: Int32?) {
|
||||||
self.id = id
|
self.id = id
|
||||||
self.accessHash = accessHash
|
self.accessHash = accessHash
|
||||||
self.slug = slug
|
self.slug = slug
|
||||||
@@ -102,7 +102,7 @@ public final class TelegramTheme: OrderedItemListEntryContents, Equatable {
|
|||||||
self.settings = decoder.decodeObjectForKey("settings", decoder: { TelegramThemeSettings(decoder: $0) }) as? TelegramThemeSettings
|
self.settings = decoder.decodeObjectForKey("settings", decoder: { TelegramThemeSettings(decoder: $0) }) as? TelegramThemeSettings
|
||||||
self.isCreator = decoder.decodeInt32ForKey("isCreator", orElse: 0) != 0
|
self.isCreator = decoder.decodeInt32ForKey("isCreator", orElse: 0) != 0
|
||||||
self.isDefault = decoder.decodeInt32ForKey("isDefault", orElse: 0) != 0
|
self.isDefault = decoder.decodeInt32ForKey("isDefault", orElse: 0) != 0
|
||||||
self.installCount = decoder.decodeInt32ForKey("installCount", orElse: 0)
|
self.installCount = decoder.decodeOptionalInt32ForKey("installCount")
|
||||||
}
|
}
|
||||||
|
|
||||||
public func encode(_ encoder: PostboxEncoder) {
|
public func encode(_ encoder: PostboxEncoder) {
|
||||||
@@ -122,7 +122,11 @@ public final class TelegramTheme: OrderedItemListEntryContents, Equatable {
|
|||||||
}
|
}
|
||||||
encoder.encodeInt32(self.isCreator ? 1 : 0, forKey: "isCreator")
|
encoder.encodeInt32(self.isCreator ? 1 : 0, forKey: "isCreator")
|
||||||
encoder.encodeInt32(self.isDefault ? 1 : 0, forKey: "isDefault")
|
encoder.encodeInt32(self.isDefault ? 1 : 0, forKey: "isDefault")
|
||||||
encoder.encodeInt32(self.installCount, forKey: "installCount")
|
if let installCount = self.installCount {
|
||||||
|
encoder.encodeInt32(installCount, forKey: "installCount")
|
||||||
|
} else {
|
||||||
|
encoder.encodeNil(forKey: "installCount")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static func ==(lhs: TelegramTheme, rhs: TelegramTheme) -> Bool {
|
public static func ==(lhs: TelegramTheme, rhs: TelegramTheme) -> Bool {
|
||||||
|
|||||||
@@ -2454,7 +2454,7 @@ func _internal_getAudioBroadcastPart(dataSource: AudioBroadcastDataSource, callI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func _internal_getVideoBroadcastPart(dataSource: AudioBroadcastDataSource, callId: Int64, accessHash: Int64, timestampIdMilliseconds: Int64, durationMilliseconds: Int64) -> Signal<GetAudioBroadcastPartResult, NoError> {
|
func _internal_getVideoBroadcastPart(dataSource: AudioBroadcastDataSource, callId: Int64, accessHash: Int64, timestampIdMilliseconds: Int64, durationMilliseconds: Int64, channelId: Int32, quality: Int32) -> Signal<GetAudioBroadcastPartResult, NoError> {
|
||||||
let scale: Int32
|
let scale: Int32
|
||||||
switch durationMilliseconds {
|
switch durationMilliseconds {
|
||||||
case 1000:
|
case 1000:
|
||||||
@@ -2465,7 +2465,7 @@ func _internal_getVideoBroadcastPart(dataSource: AudioBroadcastDataSource, callI
|
|||||||
return .single(GetAudioBroadcastPartResult(status: .notReady, responseTimestamp: Double(timestampIdMilliseconds) / 1000.0))
|
return .single(GetAudioBroadcastPartResult(status: .notReady, responseTimestamp: Double(timestampIdMilliseconds) / 1000.0))
|
||||||
}
|
}
|
||||||
|
|
||||||
return dataSource.download.requestWithAdditionalData(Api.functions.upload.getFile(flags: 0, location: .inputGroupCallStream(flags: 1 << 0, call: .inputGroupCall(id: callId, accessHash: accessHash), timeMs: timestampIdMilliseconds, scale: scale, videoChannel: 1, videoQuality: 2), offset: 0, limit: 512 * 1024), automaticFloodWait: false, failOnServerErrors: true)
|
return dataSource.download.requestWithAdditionalData(Api.functions.upload.getFile(flags: 0, location: .inputGroupCallStream(flags: 1 << 0, call: .inputGroupCall(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
|
|> map { result, responseTimestamp -> GetAudioBroadcastPartResult in
|
||||||
switch result {
|
switch result {
|
||||||
case let .file(_, _, bytes):
|
case let .file(_, _, bytes):
|
||||||
|
|||||||
@@ -104,8 +104,8 @@ public extension TelegramEngine {
|
|||||||
return _internal_getAudioBroadcastPart(dataSource: dataSource, callId: callId, accessHash: accessHash, timestampIdMilliseconds: timestampIdMilliseconds, durationMilliseconds: durationMilliseconds)
|
return _internal_getAudioBroadcastPart(dataSource: dataSource, callId: callId, accessHash: accessHash, timestampIdMilliseconds: timestampIdMilliseconds, durationMilliseconds: durationMilliseconds)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getVideoBroadcastPart(dataSource: AudioBroadcastDataSource, callId: Int64, accessHash: Int64, timestampIdMilliseconds: Int64, durationMilliseconds: Int64) -> Signal<GetAudioBroadcastPartResult, NoError> {
|
public func getVideoBroadcastPart(dataSource: AudioBroadcastDataSource, callId: Int64, accessHash: Int64, timestampIdMilliseconds: Int64, durationMilliseconds: Int64, channelId: Int32, quality: Int32) -> Signal<GetAudioBroadcastPartResult, NoError> {
|
||||||
return _internal_getVideoBroadcastPart(dataSource: dataSource, callId: callId, accessHash: accessHash, timestampIdMilliseconds: timestampIdMilliseconds, durationMilliseconds: durationMilliseconds)
|
return _internal_getVideoBroadcastPart(dataSource: dataSource, callId: callId, accessHash: accessHash, timestampIdMilliseconds: timestampIdMilliseconds, durationMilliseconds: durationMilliseconds, channelId: channelId, quality: quality)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func groupCall(peerId: PeerId, myPeerId: PeerId, id: Int64, accessHash: Int64, state: GroupCallParticipantsContext.State, previousServiceState: GroupCallParticipantsContext.ServiceState?) -> GroupCallParticipantsContext {
|
public func groupCall(peerId: PeerId, myPeerId: PeerId, id: Int64, accessHash: Int64, state: GroupCallParticipantsContext.State, previousServiceState: GroupCallParticipantsContext.ServiceState?) -> GroupCallParticipantsContext {
|
||||||
|
|||||||
@@ -357,7 +357,7 @@ func _internal_fetchAndUpdateCachedPeerData(accountPeerId: PeerId, peerId rawPee
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch fullChat {
|
switch fullChat {
|
||||||
case let .channelFull(flags, _, about, participantsCount, adminsCount, kickedCount, bannedCount, _, _, _, _, chatPhoto, _, apiExportedInvite, apiBotInfos, migratedFromChatId, migratedFromMaxId, pinnedMsgId, stickerSet, minAvailableMsgId, folderId, linkedChatId, location, slowmodeSeconds, slowmodeNextSendDate, statsDc, pts, inputCall, ttl, pendingSuggestions, groupcallDefaultJoinAs):
|
case let .channelFull(flags, _, about, participantsCount, adminsCount, kickedCount, bannedCount, _, _, _, _, chatPhoto, _, apiExportedInvite, apiBotInfos, migratedFromChatId, migratedFromMaxId, pinnedMsgId, stickerSet, minAvailableMsgId, folderId, linkedChatId, location, slowmodeSeconds, slowmodeNextSendDate, statsDc, pts, inputCall, ttl, pendingSuggestions, groupcallDefaultJoinAs, themeEmoticon):
|
||||||
var channelFlags = CachedChannelFlags()
|
var channelFlags = CachedChannelFlags()
|
||||||
if (flags & (1 << 3)) != 0 {
|
if (flags & (1 << 3)) != 0 {
|
||||||
channelFlags.insert(.canDisplayParticipants)
|
channelFlags.insert(.canDisplayParticipants)
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ private final class ContextQueueImpl: NSObject, OngoingCallThreadLocalContextQue
|
|||||||
|
|
||||||
private enum BroadcastPartSubject {
|
private enum BroadcastPartSubject {
|
||||||
case audio
|
case audio
|
||||||
case video
|
case video(channelId: Int32, quality: OngoingGroupCallContext.VideoChannel.Quality)
|
||||||
}
|
}
|
||||||
|
|
||||||
private protocol BroadcastPartSource: AnyObject {
|
private protocol BroadcastPartSource: AnyObject {
|
||||||
@@ -80,30 +80,18 @@ private final class NetworkBroadcastPartSource: BroadcastPartSource {
|
|||||||
case .audio:
|
case .audio:
|
||||||
return engine.calls.getAudioBroadcastPart(dataSource: dataSource, callId: callId, accessHash: accessHash, timestampIdMilliseconds: timestampIdMilliseconds, durationMilliseconds: durationMilliseconds)
|
return engine.calls.getAudioBroadcastPart(dataSource: dataSource, callId: callId, accessHash: accessHash, timestampIdMilliseconds: timestampIdMilliseconds, durationMilliseconds: durationMilliseconds)
|
||||||
|> map(Optional.init)
|
|> map(Optional.init)
|
||||||
case .video:
|
case let .video(channelId, quality):
|
||||||
#if DEBUG && false
|
let mappedQuality: Int32
|
||||||
return engine.calls.getAudioBroadcastPart(dataSource: dataSource, callId: callId, accessHash: accessHash, timestampIdMilliseconds: timestampIdMilliseconds, durationMilliseconds: durationMilliseconds)
|
switch quality {
|
||||||
|> map { result -> GetAudioBroadcastPartResult in
|
case .thumbnail:
|
||||||
switch result.status {
|
mappedQuality = 0
|
||||||
case .data:
|
case .medium:
|
||||||
guard let path = Bundle.main.path(forResource: "chunk2.ch2.q1", ofType: "mp4"), let data = try? Data(contentsOf: URL(fileURLWithPath: path)) else {
|
mappedQuality = 1
|
||||||
return GetAudioBroadcastPartResult(
|
case .full:
|
||||||
status: .notReady,
|
mappedQuality = 2
|
||||||
responseTimestamp: result.responseTimestamp
|
|
||||||
)
|
|
||||||
}
|
|
||||||
return GetAudioBroadcastPartResult(
|
|
||||||
status: .data(data),
|
|
||||||
responseTimestamp: result.responseTimestamp
|
|
||||||
)
|
|
||||||
default:
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#else
|
return engine.calls.getVideoBroadcastPart(dataSource: dataSource, callId: callId, accessHash: accessHash, timestampIdMilliseconds: timestampIdMilliseconds, durationMilliseconds: durationMilliseconds, channelId: channelId, quality: mappedQuality)
|
||||||
return engine.calls.getVideoBroadcastPart(dataSource: dataSource, callId: callId, accessHash: accessHash, timestampIdMilliseconds: timestampIdMilliseconds, durationMilliseconds: durationMilliseconds)
|
|
||||||
|> map(Optional.init)
|
|> map(Optional.init)
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return .single(nil)
|
return .single(nil)
|
||||||
@@ -446,11 +434,22 @@ public final class OngoingGroupCallContext {
|
|||||||
|
|
||||||
return OngoingGroupCallBroadcastPartTaskImpl(disposable: disposable)
|
return OngoingGroupCallBroadcastPartTaskImpl(disposable: disposable)
|
||||||
},
|
},
|
||||||
requestVideoBroadcastPart: { timestampMilliseconds, durationMilliseconds, completion in
|
requestVideoBroadcastPart: { timestampMilliseconds, durationMilliseconds, channelId, quality, completion in
|
||||||
let disposable = MetaDisposable()
|
let disposable = MetaDisposable()
|
||||||
|
|
||||||
queue.async {
|
queue.async {
|
||||||
disposable.set(broadcastPartsSource?.requestPart(timestampMilliseconds: timestampMilliseconds, durationMilliseconds: durationMilliseconds, subject: .video, completion: completion, rejoinNeeded: {
|
let mappedQuality: OngoingGroupCallContext.VideoChannel.Quality
|
||||||
|
switch quality {
|
||||||
|
case .thumbnail:
|
||||||
|
mappedQuality = .thumbnail
|
||||||
|
case .medium:
|
||||||
|
mappedQuality = .medium
|
||||||
|
case .full:
|
||||||
|
mappedQuality = .full
|
||||||
|
@unknown default:
|
||||||
|
mappedQuality = .thumbnail
|
||||||
|
}
|
||||||
|
disposable.set(broadcastPartsSource?.requestPart(timestampMilliseconds: timestampMilliseconds, durationMilliseconds: durationMilliseconds, subject: .video(channelId: channelId, quality: mappedQuality), completion: completion, rejoinNeeded: {
|
||||||
rejoinNeeded()
|
rejoinNeeded()
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -345,7 +345,7 @@ typedef NS_ENUM(int32_t, OngoingGroupCallRequestedVideoQuality) {
|
|||||||
videoCapturer:(OngoingCallThreadLocalContextVideoCapturer * _Nullable)videoCapturer
|
videoCapturer:(OngoingCallThreadLocalContextVideoCapturer * _Nullable)videoCapturer
|
||||||
requestMediaChannelDescriptions:(id<OngoingGroupCallMediaChannelDescriptionTask> _Nonnull (^ _Nonnull)(NSArray<NSNumber *> * _Nonnull, void (^ _Nonnull)(NSArray<OngoingGroupCallMediaChannelDescription *> * _Nonnull)))requestMediaChannelDescriptions
|
requestMediaChannelDescriptions:(id<OngoingGroupCallMediaChannelDescriptionTask> _Nonnull (^ _Nonnull)(NSArray<NSNumber *> * _Nonnull, void (^ _Nonnull)(NSArray<OngoingGroupCallMediaChannelDescription *> * _Nonnull)))requestMediaChannelDescriptions
|
||||||
requestAudioBroadcastPart:(id<OngoingGroupCallBroadcastPartTask> _Nonnull (^ _Nonnull)(int64_t, int64_t, void (^ _Nonnull)(OngoingGroupCallBroadcastPart * _Nullable)))requestAudioBroadcastPart
|
requestAudioBroadcastPart:(id<OngoingGroupCallBroadcastPartTask> _Nonnull (^ _Nonnull)(int64_t, int64_t, void (^ _Nonnull)(OngoingGroupCallBroadcastPart * _Nullable)))requestAudioBroadcastPart
|
||||||
requestVideoBroadcastPart:(id<OngoingGroupCallBroadcastPartTask> _Nonnull (^ _Nonnull)(int64_t, int64_t, void (^ _Nonnull)(OngoingGroupCallBroadcastPart * _Nullable)))requestVideoBroadcastPart
|
requestVideoBroadcastPart:(id<OngoingGroupCallBroadcastPartTask> _Nonnull (^ _Nonnull)(int64_t, int64_t, int32_t, OngoingGroupCallRequestedVideoQuality, void (^ _Nonnull)(OngoingGroupCallBroadcastPart * _Nullable)))requestVideoBroadcastPart
|
||||||
outgoingAudioBitrateKbit:(int32_t)outgoingAudioBitrateKbit
|
outgoingAudioBitrateKbit:(int32_t)outgoingAudioBitrateKbit
|
||||||
videoContentType:(OngoingGroupCallVideoContentType)videoContentType
|
videoContentType:(OngoingGroupCallVideoContentType)videoContentType
|
||||||
enableNoiseSuppression:(bool)enableNoiseSuppression;
|
enableNoiseSuppression:(bool)enableNoiseSuppression;
|
||||||
|
|||||||
@@ -1362,7 +1362,7 @@ private:
|
|||||||
videoCapturer:(OngoingCallThreadLocalContextVideoCapturer * _Nullable)videoCapturer
|
videoCapturer:(OngoingCallThreadLocalContextVideoCapturer * _Nullable)videoCapturer
|
||||||
requestMediaChannelDescriptions:(id<OngoingGroupCallMediaChannelDescriptionTask> _Nonnull (^ _Nonnull)(NSArray<NSNumber *> * _Nonnull, void (^ _Nonnull)(NSArray<OngoingGroupCallMediaChannelDescription *> * _Nonnull)))requestMediaChannelDescriptions
|
requestMediaChannelDescriptions:(id<OngoingGroupCallMediaChannelDescriptionTask> _Nonnull (^ _Nonnull)(NSArray<NSNumber *> * _Nonnull, void (^ _Nonnull)(NSArray<OngoingGroupCallMediaChannelDescription *> * _Nonnull)))requestMediaChannelDescriptions
|
||||||
requestAudioBroadcastPart:(id<OngoingGroupCallBroadcastPartTask> _Nonnull (^ _Nonnull)(int64_t, int64_t, void (^ _Nonnull)(OngoingGroupCallBroadcastPart * _Nullable)))requestAudioBroadcastPart
|
requestAudioBroadcastPart:(id<OngoingGroupCallBroadcastPartTask> _Nonnull (^ _Nonnull)(int64_t, int64_t, void (^ _Nonnull)(OngoingGroupCallBroadcastPart * _Nullable)))requestAudioBroadcastPart
|
||||||
requestVideoBroadcastPart:(id<OngoingGroupCallBroadcastPartTask> _Nonnull (^ _Nonnull)(int64_t, int64_t, void (^ _Nonnull)(OngoingGroupCallBroadcastPart * _Nullable)))requestVideoBroadcastPart
|
requestVideoBroadcastPart:(id<OngoingGroupCallBroadcastPartTask> _Nonnull (^ _Nonnull)(int64_t, int64_t, int32_t, OngoingGroupCallRequestedVideoQuality, void (^ _Nonnull)(OngoingGroupCallBroadcastPart * _Nullable)))requestVideoBroadcastPart
|
||||||
outgoingAudioBitrateKbit:(int32_t)outgoingAudioBitrateKbit
|
outgoingAudioBitrateKbit:(int32_t)outgoingAudioBitrateKbit
|
||||||
videoContentType:(OngoingGroupCallVideoContentType)videoContentType
|
videoContentType:(OngoingGroupCallVideoContentType)videoContentType
|
||||||
enableNoiseSuppression:(bool)enableNoiseSuppression {
|
enableNoiseSuppression:(bool)enableNoiseSuppression {
|
||||||
@@ -1469,8 +1469,27 @@ private:
|
|||||||
});
|
});
|
||||||
return std::make_shared<BroadcastPartTaskImpl>(task);
|
return std::make_shared<BroadcastPartTaskImpl>(task);
|
||||||
},
|
},
|
||||||
.requestVideoBroadcastPart = [requestVideoBroadcastPart](int64_t timestampMilliseconds, int64_t durationMilliseconds, std::function<void(tgcalls::BroadcastPart &&)> completion) -> std::shared_ptr<tgcalls::BroadcastPartTask> {
|
.requestVideoBroadcastPart = [requestVideoBroadcastPart](int64_t timestampMilliseconds, int64_t durationMilliseconds, int32_t channelId, tgcalls::VideoChannelDescription::Quality quality, std::function<void(tgcalls::BroadcastPart &&)> completion) -> std::shared_ptr<tgcalls::BroadcastPartTask> {
|
||||||
id<OngoingGroupCallBroadcastPartTask> task = requestVideoBroadcastPart(timestampMilliseconds, durationMilliseconds, ^(OngoingGroupCallBroadcastPart * _Nullable part) {
|
OngoingGroupCallRequestedVideoQuality mappedQuality;
|
||||||
|
switch (quality) {
|
||||||
|
case tgcalls::VideoChannelDescription::Quality::Thumbnail: {
|
||||||
|
mappedQuality = OngoingGroupCallRequestedVideoQualityThumbnail;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case tgcalls::VideoChannelDescription::Quality::Medium: {
|
||||||
|
mappedQuality = OngoingGroupCallRequestedVideoQualityMedium;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case tgcalls::VideoChannelDescription::Quality::Full: {
|
||||||
|
mappedQuality = OngoingGroupCallRequestedVideoQualityFull;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
mappedQuality = OngoingGroupCallRequestedVideoQualityThumbnail;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
id<OngoingGroupCallBroadcastPartTask> task = requestVideoBroadcastPart(timestampMilliseconds, durationMilliseconds, channelId, mappedQuality, ^(OngoingGroupCallBroadcastPart * _Nullable part) {
|
||||||
tgcalls::BroadcastPart parsedPart;
|
tgcalls::BroadcastPart parsedPart;
|
||||||
parsedPart.timestampMilliseconds = part.timestampMilliseconds;
|
parsedPart.timestampMilliseconds = part.timestampMilliseconds;
|
||||||
|
|
||||||
|
|||||||
Submodule submodules/TgVoipWebrtc/tgcalls updated: 2147fc1561...a984927307
Reference in New Issue
Block a user