mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Various improvements
This commit is contained in:
parent
e6881a78dc
commit
7b0b47e894
@ -12067,10 +12067,13 @@ Sorry for the inconvenience.";
|
|||||||
"Login.EnterPhraseHint" = "You can copy and paste the phrase here.";
|
"Login.EnterPhraseHint" = "You can copy and paste the phrase here.";
|
||||||
"Login.BackToWord" = "Back to entering the word";
|
"Login.BackToWord" = "Back to entering the word";
|
||||||
"Login.BackToPhrase" = "Back to entering the phrase";
|
"Login.BackToPhrase" = "Back to entering the phrase";
|
||||||
|
"Login.BackToCode" = "Back to entering the code";
|
||||||
|
|
||||||
"Login.WrongPhraseError" = "Incorrect, please try again.";
|
"Login.WrongPhraseError" = "Incorrect, please try again.";
|
||||||
"Login.Paste" = "Paste";
|
"Login.Paste" = "Paste";
|
||||||
|
|
||||||
|
"Login.ReturnToWord" = "Return to entering the word";
|
||||||
|
"Login.ReturnToPhrase" = "Return to entering the phrase";
|
||||||
"Login.ReturnToCode" = "Return to entering the code";
|
"Login.ReturnToCode" = "Return to entering the code";
|
||||||
|
|
||||||
"Map.LiveLocationPrivateNewDescription" = "Choose for how long **%@** will see your accurate location, including when the app is closed.";
|
"Map.LiveLocationPrivateNewDescription" = "Choose for how long **%@** will see your accurate location, including when the app is closed.";
|
||||||
@ -12110,3 +12113,22 @@ Sorry for the inconvenience.";
|
|||||||
"ReportPeer.ReportReaction.Text" = "Are you sure you want to report reactions from this user?";
|
"ReportPeer.ReportReaction.Text" = "Are you sure you want to report reactions from this user?";
|
||||||
"ReportPeer.ReportReaction.BanAndReport" = "Ban and Report";
|
"ReportPeer.ReportReaction.BanAndReport" = "Ban and Report";
|
||||||
"ReportPeer.ReportReaction.Report" = "Report Reaction";
|
"ReportPeer.ReportReaction.Report" = "Report Reaction";
|
||||||
|
|
||||||
|
"StoryFeed.ViewAnonymously" = "View Anonymously";
|
||||||
|
|
||||||
|
"Channel.AdminLogFilter.EventsAdminRights" = "New Admin Rights";
|
||||||
|
"Channel.AdminLogFilter.EventsExceptions" = "New Exceptions";
|
||||||
|
"Channel.AdminLogFilter.EventsLeavingGroup" = "Members Left the Group";
|
||||||
|
"Channel.AdminLogFilter.EventsLeavingChannel" = "Subscribers Removed";
|
||||||
|
|
||||||
|
"Channel.AdminLogFilter.RecentActionsTitle" = "Recent Actions";
|
||||||
|
"Channel.AdminLogFilter.FilterActionsTypeTitle" = "FILTER ACTIONS BY TYPE";
|
||||||
|
"Channel.AdminLogFilter.FilterActionsAdminsTitle" = "FILTER ACTIONS BY ADMINS";
|
||||||
|
"Channel.AdminLogFilter.ShowAllAdminsActions" = "Show Actions by All Admins";
|
||||||
|
"Channel.AdminLogFilter.ApplyFilter" = "Apply Filter";
|
||||||
|
|
||||||
|
"Channel.AdminLogFilter.Section.MembersGroup" = "Members and Admins";
|
||||||
|
"Channel.AdminLogFilter.Section.MembersChannel" = "Subscribers and Admins";
|
||||||
|
"Channel.AdminLogFilter.Section.SettingsGroup" = "Group Settings";
|
||||||
|
"Channel.AdminLogFilter.Section.SettingsChannel" = "Channel Settings";
|
||||||
|
"Channel.AdminLogFilter.Section.Messages" = "Messages";
|
||||||
|
@ -27,7 +27,7 @@ public final class AuthorizationSequenceCodeEntryController: ViewController {
|
|||||||
var resetEmail: (() -> Void)?
|
var resetEmail: (() -> Void)?
|
||||||
var retryResetEmail: (() -> Void)?
|
var retryResetEmail: (() -> Void)?
|
||||||
|
|
||||||
var data: (String, String?, SentAuthorizationCodeType, AuthorizationCodeNextType?, Int32?, Bool, Bool)?
|
var data: (String, String?, SentAuthorizationCodeType, AuthorizationCodeNextType?, Int32?, SentAuthorizationCodeType?)?
|
||||||
var termsOfService: (UnauthorizedAccountTermsOfService, Bool)?
|
var termsOfService: (UnauthorizedAccountTermsOfService, Bool)?
|
||||||
|
|
||||||
private let hapticFeedback = HapticFeedback()
|
private let hapticFeedback = HapticFeedback()
|
||||||
@ -74,7 +74,7 @@ public final class AuthorizationSequenceCodeEntryController: ViewController {
|
|||||||
let proceed: String
|
let proceed: String
|
||||||
let stop: String
|
let stop: String
|
||||||
|
|
||||||
if let (_, _, type, _, _, _, _) = self?.data, case .email = type {
|
if let (_, _, type, _, _, _) = self?.data, case .email = type {
|
||||||
text = presentationData.strings.Login_CancelEmailVerification
|
text = presentationData.strings.Login_CancelEmailVerification
|
||||||
proceed = presentationData.strings.Login_CancelEmailVerificationContinue
|
proceed = presentationData.strings.Login_CancelEmailVerificationContinue
|
||||||
stop = presentationData.strings.Login_CancelEmailVerificationStop
|
stop = presentationData.strings.Login_CancelEmailVerificationStop
|
||||||
@ -141,12 +141,12 @@ public final class AuthorizationSequenceCodeEntryController: ViewController {
|
|||||||
self?.present(c, in: .window(.root), with: a)
|
self?.present(c, in: .window(.root), with: a)
|
||||||
}
|
}
|
||||||
|
|
||||||
if let (number, email, codeType, nextType, timeout, hasPreviousCode, previousIsPhrase) = self.data {
|
if let (number, email, codeType, nextType, timeout, previousCodeType) = self.data {
|
||||||
var appleSignInAllowed = false
|
var appleSignInAllowed = false
|
||||||
if case let .email(_, _, _, _, appleSignInAllowedValue, _) = codeType {
|
if case let .email(_, _, _, _, appleSignInAllowedValue, _) = codeType {
|
||||||
appleSignInAllowed = appleSignInAllowedValue
|
appleSignInAllowed = appleSignInAllowedValue
|
||||||
}
|
}
|
||||||
self.controllerNode.updateData(number: number, email: email, codeType: codeType, nextType: nextType, timeout: timeout, appleSignInAllowed: appleSignInAllowed, hasPreviousCode: hasPreviousCode, previousIsPhrase: previousIsPhrase)
|
self.controllerNode.updateData(number: number, email: email, codeType: codeType, nextType: nextType, timeout: timeout, appleSignInAllowed: appleSignInAllowed, previousCodeType: previousCodeType)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,10 +194,10 @@ public final class AuthorizationSequenceCodeEntryController: ViewController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public func updateData(number: String, email: String?, codeType: SentAuthorizationCodeType, nextType: AuthorizationCodeNextType?, timeout: Int32?, termsOfService: (UnauthorizedAccountTermsOfService, Bool)?, hasPreviousCode: Bool, previousIsPhrase: Bool) {
|
public func updateData(number: String, email: String?, codeType: SentAuthorizationCodeType, nextType: AuthorizationCodeNextType?, timeout: Int32?, termsOfService: (UnauthorizedAccountTermsOfService, Bool)?, previousCodeType: SentAuthorizationCodeType?) {
|
||||||
self.termsOfService = termsOfService
|
self.termsOfService = termsOfService
|
||||||
if self.data?.0 != number || self.data?.1 != email || self.data?.2 != codeType || self.data?.3 != nextType || self.data?.4 != timeout || self.data?.5 != hasPreviousCode || self.data?.6 != previousIsPhrase {
|
if self.data?.0 != number || self.data?.1 != email || self.data?.2 != codeType || self.data?.3 != nextType || self.data?.4 != timeout || self.data?.5 != previousCodeType {
|
||||||
self.data = (number, email, codeType, nextType, timeout, hasPreviousCode, previousIsPhrase)
|
self.data = (number, email, codeType, nextType, timeout, previousCodeType)
|
||||||
|
|
||||||
var appleSignInAllowed = false
|
var appleSignInAllowed = false
|
||||||
if case let .email(_, _, _, _, appleSignInAllowedValue, _) = codeType {
|
if case let .email(_, _, _, _, appleSignInAllowedValue, _) = codeType {
|
||||||
@ -205,7 +205,7 @@ public final class AuthorizationSequenceCodeEntryController: ViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self.isNodeLoaded {
|
if self.isNodeLoaded {
|
||||||
self.controllerNode.updateData(number: number, email: email, codeType: codeType, nextType: nextType, timeout: timeout, appleSignInAllowed: appleSignInAllowed, hasPreviousCode: hasPreviousCode, previousIsPhrase: previousIsPhrase)
|
self.controllerNode.updateData(number: number, email: email, codeType: codeType, nextType: nextType, timeout: timeout, appleSignInAllowed: appleSignInAllowed, previousCodeType: previousCodeType)
|
||||||
self.requestLayout(transition: .immediate)
|
self.requestLayout(transition: .immediate)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -229,7 +229,7 @@ public final class AuthorizationSequenceCodeEntryController: ViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@objc private func nextPressed() {
|
@objc private func nextPressed() {
|
||||||
guard let (_, _, type, _, _, _, _) = self.data else {
|
guard let (_, _, type, _, _, _) = self.data else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,8 +59,8 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF
|
|||||||
private var layoutArguments: (ContainerViewLayout, CGFloat)?
|
private var layoutArguments: (ContainerViewLayout, CGFloat)?
|
||||||
|
|
||||||
private var appleSignInAllowed = false
|
private var appleSignInAllowed = false
|
||||||
private var hasPreviousCode = false
|
|
||||||
private var previousIsPhrase = false
|
private var previousCodeType: SentAuthorizationCodeType?
|
||||||
|
|
||||||
var phoneNumber: String = "" {
|
var phoneNumber: String = "" {
|
||||||
didSet {
|
didSet {
|
||||||
@ -403,12 +403,11 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF
|
|||||||
self.codeInputView.text = ""
|
self.codeInputView.text = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateData(number: String, email: String?, codeType: SentAuthorizationCodeType, nextType: AuthorizationCodeNextType?, timeout: Int32?, appleSignInAllowed: Bool, hasPreviousCode: Bool, previousIsPhrase: Bool) {
|
func updateData(number: String, email: String?, codeType: SentAuthorizationCodeType, nextType: AuthorizationCodeNextType?, timeout: Int32?, appleSignInAllowed: Bool, previousCodeType: SentAuthorizationCodeType?) {
|
||||||
self.codeType = codeType
|
self.codeType = codeType
|
||||||
self.phoneNumber = number.replacingOccurrences(of: " ", with: "\u{00A0}").replacingOccurrences(of: "-", with: "\u{2011}")
|
self.phoneNumber = number.replacingOccurrences(of: " ", with: "\u{00A0}").replacingOccurrences(of: "-", with: "\u{2011}")
|
||||||
self.email = email
|
self.email = email
|
||||||
self.hasPreviousCode = hasPreviousCode
|
self.previousCodeType = previousCodeType
|
||||||
self.previousIsPhrase = previousIsPhrase
|
|
||||||
|
|
||||||
var appleSignInAllowed = appleSignInAllowed
|
var appleSignInAllowed = appleSignInAllowed
|
||||||
if #available(iOS 13.0, *) {
|
if #available(iOS 13.0, *) {
|
||||||
@ -441,7 +440,7 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF
|
|||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
if let currentTimeoutTime = strongSelf.currentTimeoutTime, currentTimeoutTime > 0 {
|
if let currentTimeoutTime = strongSelf.currentTimeoutTime, currentTimeoutTime > 0 {
|
||||||
strongSelf.currentTimeoutTime = currentTimeoutTime - 1
|
strongSelf.currentTimeoutTime = currentTimeoutTime - 1
|
||||||
let (nextOptionText, nextOptionActive) = authorizationNextOptionText(currentType: codeType, nextType: nextType, returnToCode: hasPreviousCode, timeout: strongSelf.currentTimeoutTime, strings: strongSelf.strings, primaryColor: strongSelf.theme.list.itemSecondaryTextColor, accentColor: strongSelf.theme.list.itemAccentColor)
|
let (nextOptionText, nextOptionActive) = authorizationNextOptionText(currentType: codeType, nextType: nextType, previousCodeType: previousCodeType, timeout: strongSelf.currentTimeoutTime, strings: strongSelf.strings, primaryColor: strongSelf.theme.list.itemSecondaryTextColor, accentColor: strongSelf.theme.list.itemAccentColor)
|
||||||
strongSelf.nextOptionTitleNode.attributedText = nextOptionText
|
strongSelf.nextOptionTitleNode.attributedText = nextOptionText
|
||||||
strongSelf.nextOptionButtonNode.isUserInteractionEnabled = nextOptionActive
|
strongSelf.nextOptionButtonNode.isUserInteractionEnabled = nextOptionActive
|
||||||
strongSelf.nextOptionButtonNode.accessibilityLabel = nextOptionText.string
|
strongSelf.nextOptionButtonNode.accessibilityLabel = nextOptionText.string
|
||||||
@ -482,7 +481,7 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF
|
|||||||
self.countdownDisposable.set(nil)
|
self.countdownDisposable.set(nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
let (nextOptionText, nextOptionActive) = authorizationNextOptionText(currentType: codeType, nextType: nextType, returnToCode: hasPreviousCode, timeout: self.currentTimeoutTime, strings: self.strings, primaryColor: self.theme.list.itemSecondaryTextColor, accentColor: self.theme.list.itemAccentColor)
|
let (nextOptionText, nextOptionActive) = authorizationNextOptionText(currentType: codeType, nextType: nextType, previousCodeType: previousCodeType, timeout: self.currentTimeoutTime, strings: self.strings, primaryColor: self.theme.list.itemSecondaryTextColor, accentColor: self.theme.list.itemAccentColor)
|
||||||
self.nextOptionTitleNode.attributedText = nextOptionText
|
self.nextOptionTitleNode.attributedText = nextOptionText
|
||||||
self.nextOptionButtonNode.isUserInteractionEnabled = nextOptionActive
|
self.nextOptionButtonNode.isUserInteractionEnabled = nextOptionActive
|
||||||
self.nextOptionButtonNode.accessibilityLabel = nextOptionText.string
|
self.nextOptionButtonNode.accessibilityLabel = nextOptionText.string
|
||||||
@ -492,12 +491,7 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF
|
|||||||
self.nextOptionButtonNode.accessibilityTraits = [.button, .notEnabled]
|
self.nextOptionButtonNode.accessibilityTraits = [.button, .notEnabled]
|
||||||
}
|
}
|
||||||
|
|
||||||
switch codeType {
|
self.nextOptionArrowNode.isHidden = previousCodeType == nil
|
||||||
case .word, .phrase:
|
|
||||||
self.nextOptionArrowNode.isHidden = !hasPreviousCode
|
|
||||||
default:
|
|
||||||
self.nextOptionArrowNode.isHidden = true
|
|
||||||
}
|
|
||||||
|
|
||||||
if let layoutArguments = self.layoutArguments {
|
if let layoutArguments = self.layoutArguments {
|
||||||
self.containerLayoutUpdated(layoutArguments.0, navigationBarHeight: layoutArguments.1, transition: .immediate)
|
self.containerLayoutUpdated(layoutArguments.0, navigationBarHeight: layoutArguments.1, transition: .immediate)
|
||||||
@ -807,7 +801,31 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF
|
|||||||
|
|
||||||
if let codeType = self.codeType {
|
if let codeType = self.codeType {
|
||||||
let yOffset: CGFloat = layout.size.width > 320.0 ? 18.0 : 5.0
|
let yOffset: CGFloat = layout.size.width > 320.0 ? 18.0 : 5.0
|
||||||
if case .phrase = codeType {
|
if let previousCodeType = self.previousCodeType {
|
||||||
|
self.hintButtonNode.alpha = 1.0
|
||||||
|
self.hintButtonNode.isUserInteractionEnabled = true
|
||||||
|
|
||||||
|
let actionTitle: String
|
||||||
|
switch previousCodeType {
|
||||||
|
case .word:
|
||||||
|
actionTitle = self.strings.Login_BackToWord
|
||||||
|
case .phrase:
|
||||||
|
actionTitle = self.strings.Login_BackToPhrase
|
||||||
|
default:
|
||||||
|
actionTitle = self.strings.Login_BackToCode
|
||||||
|
}
|
||||||
|
|
||||||
|
self.hintTextNode.attributedText = NSAttributedString(string: actionTitle, font: Font.regular(13.0), textColor: self.theme.list.itemAccentColor, paragraphAlignment: .center)
|
||||||
|
|
||||||
|
let hintTextSize = self.hintTextNode.updateLayout(CGSize(width: layout.size.width - 48.0, height: .greatestFiniteMagnitude))
|
||||||
|
transition.updateFrame(node: self.hintButtonNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((layout.size.width - hintTextSize.width) / 2.0), y: self.codeInputView.frame.maxY + yOffset + 6.0), size: hintTextSize))
|
||||||
|
self.hintTextNode.frame = CGRect(origin: .zero, size: hintTextSize)
|
||||||
|
|
||||||
|
if let icon = self.hintArrowNode.image {
|
||||||
|
self.hintArrowNode.frame = CGRect(origin: CGPoint(x: self.hintTextNode.frame.minX - icon.size.width - 5.0, y: self.hintTextNode.frame.midY - icon.size.height / 2.0), size: icon.size)
|
||||||
|
}
|
||||||
|
self.hintArrowNode.isHidden = false
|
||||||
|
} else if case .phrase = codeType {
|
||||||
if self.errorTextNode.alpha.isZero {
|
if self.errorTextNode.alpha.isZero {
|
||||||
self.hintButtonNode.alpha = 1.0
|
self.hintButtonNode.alpha = 1.0
|
||||||
}
|
}
|
||||||
@ -827,20 +845,10 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF
|
|||||||
self.hintButtonNode.alpha = 0.0
|
self.hintButtonNode.alpha = 0.0
|
||||||
self.hintButtonNode.isUserInteractionEnabled = false
|
self.hintButtonNode.isUserInteractionEnabled = false
|
||||||
self.hintArrowNode.isHidden = true
|
self.hintArrowNode.isHidden = true
|
||||||
} else if self.hasPreviousCode {
|
|
||||||
self.hintButtonNode.alpha = 1.0
|
|
||||||
self.hintButtonNode.isUserInteractionEnabled = true
|
|
||||||
|
|
||||||
self.hintTextNode.attributedText = NSAttributedString(string: self.previousIsPhrase ? self.strings.Login_BackToPhrase : self.strings.Login_BackToWord, font: Font.regular(13.0), textColor: self.theme.list.itemAccentColor, paragraphAlignment: .center)
|
let pasteSize = self.pasteButton.measure(layout.size)
|
||||||
|
let pasteButtonSize = CGSize(width: pasteSize.width + 16.0, height: 24.0)
|
||||||
let hintTextSize = self.hintTextNode.updateLayout(CGSize(width: layout.size.width - 48.0, height: .greatestFiniteMagnitude))
|
transition.updateFrame(node: self.pasteButton, frame: CGRect(origin: CGPoint(x: layout.size.width - 40.0 - pasteButtonSize.width, y: self.textField.frame.midY - pasteButtonSize.height / 2.0), size: pasteButtonSize))
|
||||||
transition.updateFrame(node: self.hintButtonNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((layout.size.width - hintTextSize.width) / 2.0), y: self.codeInputView.frame.maxY + yOffset + 6.0), size: hintTextSize))
|
|
||||||
self.hintTextNode.frame = CGRect(origin: .zero, size: hintTextSize)
|
|
||||||
|
|
||||||
if let icon = self.hintArrowNode.image {
|
|
||||||
self.hintArrowNode.frame = CGRect(origin: CGPoint(x: self.hintTextNode.frame.minX - icon.size.width - 5.0, y: self.hintTextNode.frame.midY - icon.size.height / 2.0), size: icon.size)
|
|
||||||
}
|
|
||||||
self.hintArrowNode.isHidden = false
|
|
||||||
} else {
|
} else {
|
||||||
self.hintButtonNode.alpha = 0.0
|
self.hintButtonNode.alpha = 0.0
|
||||||
self.hintButtonNode.isUserInteractionEnabled = false
|
self.hintButtonNode.isUserInteractionEnabled = false
|
||||||
@ -1002,7 +1010,11 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF
|
|||||||
var updated = textField.text ?? ""
|
var updated = textField.text ?? ""
|
||||||
updated.replaceSubrange(updated.index(updated.startIndex, offsetBy: range.lowerBound) ..< updated.index(updated.startIndex, offsetBy: range.upperBound), with: string)
|
updated.replaceSubrange(updated.index(updated.startIndex, offsetBy: range.lowerBound) ..< updated.index(updated.startIndex, offsetBy: range.upperBound), with: string)
|
||||||
|
|
||||||
return checkValidity(text: updated) && !updated.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
|
if updated.isEmpty {
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
return checkValidity(text: updated) && !updated.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkValidity(text: String) -> Bool {
|
func checkValidity(text: String) -> Bool {
|
||||||
@ -1019,7 +1031,7 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF
|
|||||||
if let startsWith, !text.isEmpty {
|
if let startsWith, !text.isEmpty {
|
||||||
let firstWord = text.components(separatedBy: " ").first ?? ""
|
let firstWord = text.components(separatedBy: " ").first ?? ""
|
||||||
if !firstWord.isEmpty && !startsWith.hasPrefix(firstWord) {
|
if !firstWord.isEmpty && !startsWith.hasPrefix(firstWord) {
|
||||||
if self.errorTextNode.alpha.isZero {
|
if self.errorTextNode.alpha.isZero, text.count < 3 {
|
||||||
self.animateError(text: self.strings.Login_WrongPhraseError)
|
self.animateError(text: self.strings.Login_WrongPhraseError)
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
|
@ -312,7 +312,7 @@ public final class AuthorizationSequenceController: NavigationController, ASAuth
|
|||||||
return controller
|
return controller
|
||||||
}
|
}
|
||||||
|
|
||||||
private func codeEntryController(number: String, phoneCodeHash: String, email: String?, type: SentAuthorizationCodeType, nextType: AuthorizationCodeNextType?, timeout: Int32?, hasPreviousCode: Bool, previousIsPhrase: Bool, termsOfService: (UnauthorizedAccountTermsOfService, Bool)?) -> AuthorizationSequenceCodeEntryController {
|
private func codeEntryController(number: String, phoneCodeHash: String, email: String?, type: SentAuthorizationCodeType, nextType: AuthorizationCodeNextType?, timeout: Int32?, previousCodeType: SentAuthorizationCodeType?, termsOfService: (UnauthorizedAccountTermsOfService, Bool)?) -> AuthorizationSequenceCodeEntryController {
|
||||||
var currentController: AuthorizationSequenceCodeEntryController?
|
var currentController: AuthorizationSequenceCodeEntryController?
|
||||||
for c in self.viewControllers {
|
for c in self.viewControllers {
|
||||||
if let c = c as? AuthorizationSequenceCodeEntryController {
|
if let c = c as? AuthorizationSequenceCodeEntryController {
|
||||||
@ -584,14 +584,9 @@ public final class AuthorizationSequenceController: NavigationController, ASAuth
|
|||||||
}
|
}
|
||||||
controller.requestNextOption = { [weak self, weak controller] in
|
controller.requestNextOption = { [weak self, weak controller] in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
switch type {
|
if previousCodeType != nil {
|
||||||
case .word, .phrase:
|
strongSelf.actionDisposable.set(togglePreviousCodeEntry(account: strongSelf.account).start())
|
||||||
if hasPreviousCode {
|
return
|
||||||
strongSelf.actionDisposable.set(togglePreviousCodeEntry(account: strongSelf.account).start())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if nextType == nil {
|
if nextType == nil {
|
||||||
@ -677,7 +672,7 @@ public final class AuthorizationSequenceController: NavigationController, ASAuth
|
|||||||
strongSelf.sharedContext.applicationBindings.openUrl(url)
|
strongSelf.sharedContext.applicationBindings.openUrl(url)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
controller.updateData(number: formatPhoneNumber(number), email: email, codeType: type, nextType: nextType, timeout: timeout, termsOfService: termsOfService, hasPreviousCode: hasPreviousCode, previousIsPhrase: previousIsPhrase)
|
controller.updateData(number: formatPhoneNumber(number), email: email, codeType: type, nextType: nextType, timeout: timeout, termsOfService: termsOfService, previousCodeType: previousCodeType)
|
||||||
return controller
|
return controller
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1238,20 +1233,14 @@ public final class AuthorizationSequenceController: NavigationController, ASAuth
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let previousCodeEntry, case let .confirmationCodeEntry(number, type, phoneCodeHash, timeout, nextType, _, _, _) = previousCodeEntry, usePrevious {
|
if let previousCodeEntry, case let .confirmationCodeEntry(number, type, phoneCodeHash, timeout, nextType, _, _, _) = previousCodeEntry, usePrevious {
|
||||||
var previousIsPhrase = false
|
controllers.append(self.codeEntryController(number: number, phoneCodeHash: phoneCodeHash, email: self.currentEmail, type: type, nextType: nextType, timeout: timeout, previousCodeType: type, termsOfService: nil))
|
||||||
if case .phrase = type {
|
|
||||||
previousIsPhrase = true
|
|
||||||
}
|
|
||||||
controllers.append(self.codeEntryController(number: number, phoneCodeHash: phoneCodeHash, email: self.currentEmail, type: type, nextType: nextType, timeout: timeout, hasPreviousCode: true, previousIsPhrase: previousIsPhrase, termsOfService: nil))
|
|
||||||
isGoingBack = true
|
isGoingBack = true
|
||||||
} else {
|
} else {
|
||||||
var previousIsPhrase = false
|
var previousCodeType: SentAuthorizationCodeType?
|
||||||
if let previousCodeEntry, case let .confirmationCodeEntry(_, type, _, _, _, _, _, _) = previousCodeEntry {
|
if let previousCodeEntry, case let .confirmationCodeEntry(_, type, _, _, _, _, _, _) = previousCodeEntry {
|
||||||
if case .phrase = type {
|
previousCodeType = type
|
||||||
previousIsPhrase = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
controllers.append(self.codeEntryController(number: number, phoneCodeHash: phoneCodeHash, email: self.currentEmail, type: type, nextType: nextType, timeout: timeout, hasPreviousCode: previousCodeEntry != nil, previousIsPhrase: previousIsPhrase, termsOfService: nil))
|
controllers.append(self.codeEntryController(number: number, phoneCodeHash: phoneCodeHash, email: self.currentEmail, type: type, nextType: nextType, timeout: timeout, previousCodeType: previousCodeType, termsOfService: nil))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,16 +56,18 @@ public func authorizationCurrentOptionText(_ type: SentAuthorizationCodeType, ph
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public func authorizationNextOptionText(currentType: SentAuthorizationCodeType, nextType: AuthorizationCodeNextType?, returnToCode: Bool = false, timeout: Int32?, strings: PresentationStrings, primaryColor: UIColor, accentColor: UIColor) -> (NSAttributedString, Bool) {
|
public func authorizationNextOptionText(currentType: SentAuthorizationCodeType, nextType: AuthorizationCodeNextType?, previousCodeType: SentAuthorizationCodeType? = nil, timeout: Int32?, strings: PresentationStrings, primaryColor: UIColor, accentColor: UIColor) -> (NSAttributedString, Bool) {
|
||||||
let font = Font.regular(16.0)
|
let font = Font.regular(16.0)
|
||||||
|
|
||||||
switch currentType {
|
if let previousCodeType {
|
||||||
case .word, .phrase:
|
switch previousCodeType {
|
||||||
if returnToCode {
|
case .word:
|
||||||
|
return (NSAttributedString(string: strings.Login_ReturnToWord, font: font, textColor: accentColor, paragraphAlignment: .center), true)
|
||||||
|
case .phrase:
|
||||||
|
return (NSAttributedString(string: strings.Login_ReturnToPhrase, font: font, textColor: accentColor, paragraphAlignment: .center), true)
|
||||||
|
default:
|
||||||
return (NSAttributedString(string: strings.Login_ReturnToCode, font: font, textColor: accentColor, paragraphAlignment: .center), true)
|
return (NSAttributedString(string: strings.Login_ReturnToCode, font: font, textColor: accentColor, paragraphAlignment: .center), true)
|
||||||
}
|
}
|
||||||
default:
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if let nextType = nextType, let timeout = timeout, timeout > 0 {
|
if let nextType = nextType, let timeout = timeout, timeout > 0 {
|
||||||
|
@ -3082,6 +3082,21 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController
|
|||||||
}
|
}
|
||||||
})))
|
})))
|
||||||
|
|
||||||
|
items.append(.action(ContextMenuActionItem(text: presentationData.strings.StoryFeed_ViewAnonymously, icon: { theme in
|
||||||
|
return generateTintedImage(image: UIImage(bundleImageName: self.context.isPremium ? "Chat/Context Menu/Eye" : "Chat/Context Menu/EyeLocked"), color: theme.contextMenu.primaryColor)
|
||||||
|
}, action: { [weak self] _, a in
|
||||||
|
a(.default)
|
||||||
|
|
||||||
|
guard let self else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if self.context.isPremium {
|
||||||
|
// self.sendMessageContext.requestStealthMode(view: self)
|
||||||
|
} else {
|
||||||
|
// self.presentStealthModeUpgradeScreen()
|
||||||
|
}
|
||||||
|
})))
|
||||||
|
|
||||||
let hideText: String
|
let hideText: String
|
||||||
if self.location == .chatList(groupId: .archive) {
|
if self.location == .chatList(groupId: .archive) {
|
||||||
hideText = self.presentationData.strings.StoryFeed_ContextUnarchive
|
hideText = self.presentationData.strings.StoryFeed_ContextUnarchive
|
||||||
|
@ -108,7 +108,7 @@ public func ChangePhoneNumberController(context: AccountContext) -> ViewControll
|
|||||||
codeController.openFragment = { url in
|
codeController.openFragment = { url in
|
||||||
context.sharedContext.applicationBindings.openUrl(url)
|
context.sharedContext.applicationBindings.openUrl(url)
|
||||||
}
|
}
|
||||||
codeController.updateData(number: formatPhoneNumber(context: context, number: phoneNumber), email: nil, codeType: next.type, nextType: nil, timeout: next.timeout, termsOfService: nil, hasPreviousCode: false, previousIsPhrase: false)
|
codeController.updateData(number: formatPhoneNumber(context: context, number: phoneNumber), email: nil, codeType: next.type, nextType: nil, timeout: next.timeout, termsOfService: nil, previousCodeType: nil)
|
||||||
dismissImpl = { [weak codeController] in
|
dismissImpl = { [weak codeController] in
|
||||||
codeController?.dismiss()
|
codeController?.dismiss()
|
||||||
}
|
}
|
||||||
|
@ -1446,7 +1446,7 @@ public func privacyAndSecurityController(
|
|||||||
emailChangeCompletion(codeController)
|
emailChangeCompletion(codeController)
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
codeController.updateData(number: "", email: email, codeType: .email(emailPattern: "", length: data.length, resetAvailablePeriod: nil, resetPendingDate: nil, appleSignInAllowed: false, setup: true), nextType: nil, timeout: nil, termsOfService: nil, hasPreviousCode: false, previousIsPhrase: false)
|
codeController.updateData(number: "", email: email, codeType: .email(emailPattern: "", length: data.length, resetAvailablePeriod: nil, resetPendingDate: nil, appleSignInAllowed: false, setup: true), nextType: nil, timeout: nil, termsOfService: nil, previousCodeType: nil)
|
||||||
pushControllerImpl?(codeController, true)
|
pushControllerImpl?(codeController, true)
|
||||||
dismissCodeControllerImpl = { [weak codeController] in
|
dismissCodeControllerImpl = { [weak codeController] in
|
||||||
codeController?.dismiss()
|
codeController?.dismiss()
|
||||||
|
@ -1401,11 +1401,11 @@ private func monetizationEntries(
|
|||||||
isCreator = true
|
isCreator = true
|
||||||
}
|
}
|
||||||
entries.append(.adsBalanceTitle(presentationData.theme, presentationData.strings.Monetization_BalanceTitle))
|
entries.append(.adsBalanceTitle(presentationData.theme, presentationData.strings.Monetization_BalanceTitle))
|
||||||
entries.append(.adsBalance(presentationData.theme, data, isCreator && data.availableBalance > 0, monetizationConfiguration.withdrawalAvailable, diamond))
|
entries.append(.adsBalance(presentationData.theme, data, isCreator && data.balances.availableBalance > 0, monetizationConfiguration.withdrawalAvailable, diamond))
|
||||||
|
|
||||||
if isCreator {
|
if isCreator {
|
||||||
let withdrawalInfoText: String
|
let withdrawalInfoText: String
|
||||||
if data.availableBalance == 0 {
|
if data.balances.availableBalance == 0 {
|
||||||
withdrawalInfoText = presentationData.strings.Monetization_Balance_ZeroInfo
|
withdrawalInfoText = presentationData.strings.Monetization_Balance_ZeroInfo
|
||||||
} else if monetizationConfiguration.withdrawalAvailable {
|
} else if monetizationConfiguration.withdrawalAvailable {
|
||||||
withdrawalInfoText = presentationData.strings.Monetization_Balance_AvailableInfo
|
withdrawalInfoText = presentationData.strings.Monetization_Balance_AvailableInfo
|
||||||
|
@ -158,13 +158,13 @@ final class MonetizationBalanceItemNode: ListViewItemNode, ItemListItemNode {
|
|||||||
let integralFont = Font.with(size: 48.0, design: .round, weight: .semibold)
|
let integralFont = Font.with(size: 48.0, design: .round, weight: .semibold)
|
||||||
let fractionalFont = Font.with(size: 24.0, design: .round, weight: .semibold)
|
let fractionalFont = Font.with(size: 24.0, design: .round, weight: .semibold)
|
||||||
|
|
||||||
let cryptoValue = formatBalanceText(item.stats.availableBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator)
|
let cryptoValue = formatBalanceText(item.stats.balances.availableBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator)
|
||||||
|
|
||||||
let amountString = amountAttributedString(cryptoValue, integralFont: integralFont, fractionalFont: fractionalFont, color: item.presentationData.theme.list.itemPrimaryTextColor)
|
let amountString = amountAttributedString(cryptoValue, integralFont: integralFont, fractionalFont: fractionalFont, color: item.presentationData.theme.list.itemPrimaryTextColor)
|
||||||
|
|
||||||
let (balanceLayout, balanceApply) = makeBalanceTextLayout(TextNodeLayoutArguments(attributedString: amountString, backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .middle, constrainedSize: CGSize(width: constrainedWidth, height: CGFloat.greatestFiniteMagnitude), alignment: .center, cutout: nil, insets: UIEdgeInsets()))
|
let (balanceLayout, balanceApply) = makeBalanceTextLayout(TextNodeLayoutArguments(attributedString: amountString, backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .middle, constrainedSize: CGSize(width: constrainedWidth, height: CGFloat.greatestFiniteMagnitude), alignment: .center, cutout: nil, insets: UIEdgeInsets()))
|
||||||
|
|
||||||
let value = item.stats.availableBalance == 0 ? "" : "≈\(formatUsdValue(item.stats.availableBalance, rate: item.stats.usdRate))"
|
let value = item.stats.balances.availableBalance == 0 ? "" : "≈\(formatUsdValue(item.stats.balances.availableBalance, rate: item.stats.usdRate))"
|
||||||
let (valueLayout, valueApply) = makeValueTextLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: value, font: Font.regular(17.0), textColor: item.presentationData.theme.list.itemSecondaryTextColor), backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .middle, constrainedSize: CGSize(width: constrainedWidth, height: CGFloat.greatestFiniteMagnitude), alignment: .center, cutout: nil, insets: UIEdgeInsets()))
|
let (valueLayout, valueApply) = makeValueTextLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: value, font: Font.regular(17.0), textColor: item.presentationData.theme.list.itemSecondaryTextColor), backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .middle, constrainedSize: CGSize(width: constrainedWidth, height: CGFloat.greatestFiniteMagnitude), alignment: .center, cutout: nil, insets: UIEdgeInsets()))
|
||||||
|
|
||||||
let verticalInset: CGFloat = 13.0
|
let verticalInset: CGFloat = 13.0
|
||||||
|
@ -732,9 +732,9 @@ class StatsOverviewItemNode: ListViewItemNode {
|
|||||||
item.context,
|
item.context,
|
||||||
params.width,
|
params.width,
|
||||||
item.presentationData,
|
item.presentationData,
|
||||||
formatBalanceText(stats.availableBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
formatBalanceText(stats.balances.availableBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
||||||
item.presentationData.strings.Monetization_Overview_Available,
|
item.presentationData.strings.Monetization_Overview_Available,
|
||||||
(stats.availableBalance == 0 ? "" : "≈\(formatUsdValue(stats.availableBalance, rate: stats.usdRate))", .generic),
|
(stats.balances.availableBalance == 0 ? "" : "≈\(formatUsdValue(stats.balances.availableBalance, rate: stats.usdRate))", .generic),
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -742,9 +742,9 @@ class StatsOverviewItemNode: ListViewItemNode {
|
|||||||
item.context,
|
item.context,
|
||||||
params.width,
|
params.width,
|
||||||
item.presentationData,
|
item.presentationData,
|
||||||
formatBalanceText(stats.currentBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
formatBalanceText(stats.balances.currentBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
||||||
item.presentationData.strings.Monetization_Overview_Current,
|
item.presentationData.strings.Monetization_Overview_Current,
|
||||||
(stats.currentBalance == 0 ? "" : "≈\(formatUsdValue(stats.currentBalance, rate: stats.usdRate))", .generic),
|
(stats.balances.currentBalance == 0 ? "" : "≈\(formatUsdValue(stats.balances.currentBalance, rate: stats.usdRate))", .generic),
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -752,9 +752,9 @@ class StatsOverviewItemNode: ListViewItemNode {
|
|||||||
item.context,
|
item.context,
|
||||||
params.width,
|
params.width,
|
||||||
item.presentationData,
|
item.presentationData,
|
||||||
formatBalanceText(stats.overallRevenue, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
formatBalanceText(stats.balances.overallRevenue, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
||||||
item.presentationData.strings.Monetization_Overview_Total,
|
item.presentationData.strings.Monetization_Overview_Total,
|
||||||
(stats.overallRevenue == 0 ? "" : "≈\(formatUsdValue(stats.overallRevenue, rate: stats.usdRate))", .generic),
|
(stats.balances.overallRevenue == 0 ? "" : "≈\(formatUsdValue(stats.balances.overallRevenue, rate: stats.usdRate))", .generic),
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -105,6 +105,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|||||||
dict[-944407322] = { return Api.BotMenuButton.parse_botMenuButton($0) }
|
dict[-944407322] = { return Api.BotMenuButton.parse_botMenuButton($0) }
|
||||||
dict[1113113093] = { return Api.BotMenuButton.parse_botMenuButtonCommands($0) }
|
dict[1113113093] = { return Api.BotMenuButton.parse_botMenuButtonCommands($0) }
|
||||||
dict[1966318984] = { return Api.BotMenuButton.parse_botMenuButtonDefault($0) }
|
dict[1966318984] = { return Api.BotMenuButton.parse_botMenuButtonDefault($0) }
|
||||||
|
dict[-2076642874] = { return Api.BroadcastRevenueBalances.parse_broadcastRevenueBalances($0) }
|
||||||
dict[1434332356] = { return Api.BroadcastRevenueTransaction.parse_broadcastRevenueTransactionProceeds($0) }
|
dict[1434332356] = { return Api.BroadcastRevenueTransaction.parse_broadcastRevenueTransactionProceeds($0) }
|
||||||
dict[1121127726] = { return Api.BroadcastRevenueTransaction.parse_broadcastRevenueTransactionRefund($0) }
|
dict[1121127726] = { return Api.BroadcastRevenueTransaction.parse_broadcastRevenueTransactionRefund($0) }
|
||||||
dict[1515784568] = { return Api.BroadcastRevenueTransaction.parse_broadcastRevenueTransactionWithdrawal($0) }
|
dict[1515784568] = { return Api.BroadcastRevenueTransaction.parse_broadcastRevenueTransactionWithdrawal($0) }
|
||||||
@ -251,6 +252,8 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|||||||
dict[1128644211] = { return Api.EmailVerifyPurpose.parse_emailVerifyPurposeLoginSetup($0) }
|
dict[1128644211] = { return Api.EmailVerifyPurpose.parse_emailVerifyPurposeLoginSetup($0) }
|
||||||
dict[-1141565819] = { return Api.EmailVerifyPurpose.parse_emailVerifyPurposePassport($0) }
|
dict[-1141565819] = { return Api.EmailVerifyPurpose.parse_emailVerifyPurposePassport($0) }
|
||||||
dict[2056961449] = { return Api.EmojiGroup.parse_emojiGroup($0) }
|
dict[2056961449] = { return Api.EmojiGroup.parse_emojiGroup($0) }
|
||||||
|
dict[-2133693241] = { return Api.EmojiGroup.parse_emojiGroupGreeting($0) }
|
||||||
|
dict[154914612] = { return Api.EmojiGroup.parse_emojiGroupPremium($0) }
|
||||||
dict[-709641735] = { return Api.EmojiKeyword.parse_emojiKeyword($0) }
|
dict[-709641735] = { return Api.EmojiKeyword.parse_emojiKeyword($0) }
|
||||||
dict[594408994] = { return Api.EmojiKeyword.parse_emojiKeywordDeleted($0) }
|
dict[594408994] = { return Api.EmojiKeyword.parse_emojiKeywordDeleted($0) }
|
||||||
dict[1556570557] = { return Api.EmojiKeywordsDifference.parse_emojiKeywordsDifference($0) }
|
dict[1556570557] = { return Api.EmojiKeywordsDifference.parse_emojiKeywordsDifference($0) }
|
||||||
@ -925,6 +928,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|||||||
dict[-997782967] = { return Api.Update.parse_updateBotStopped($0) }
|
dict[-997782967] = { return Api.Update.parse_updateBotStopped($0) }
|
||||||
dict[-2095595325] = { return Api.Update.parse_updateBotWebhookJSON($0) }
|
dict[-2095595325] = { return Api.Update.parse_updateBotWebhookJSON($0) }
|
||||||
dict[-1684914010] = { return Api.Update.parse_updateBotWebhookJSONQuery($0) }
|
dict[-1684914010] = { return Api.Update.parse_updateBotWebhookJSONQuery($0) }
|
||||||
|
dict[1550177112] = { return Api.Update.parse_updateBroadcastRevenueTransactions($0) }
|
||||||
dict[1666927625] = { return Api.Update.parse_updateChannel($0) }
|
dict[1666927625] = { return Api.Update.parse_updateChannel($0) }
|
||||||
dict[-1304443240] = { return Api.Update.parse_updateChannelAvailableMessages($0) }
|
dict[-1304443240] = { return Api.Update.parse_updateChannelAvailableMessages($0) }
|
||||||
dict[-761649164] = { return Api.Update.parse_updateChannelMessageForwards($0) }
|
dict[-761649164] = { return Api.Update.parse_updateChannelMessageForwards($0) }
|
||||||
@ -1301,7 +1305,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|||||||
dict[-1696454430] = { return Api.premium.MyBoosts.parse_myBoosts($0) }
|
dict[-1696454430] = { return Api.premium.MyBoosts.parse_myBoosts($0) }
|
||||||
dict[-594852657] = { return Api.smsjobs.EligibilityToJoin.parse_eligibleToJoin($0) }
|
dict[-594852657] = { return Api.smsjobs.EligibilityToJoin.parse_eligibleToJoin($0) }
|
||||||
dict[720277905] = { return Api.smsjobs.Status.parse_status($0) }
|
dict[720277905] = { return Api.smsjobs.Status.parse_status($0) }
|
||||||
dict[-797226067] = { return Api.stats.BroadcastRevenueStats.parse_broadcastRevenueStats($0) }
|
dict[1409802903] = { return Api.stats.BroadcastRevenueStats.parse_broadcastRevenueStats($0) }
|
||||||
dict[-2028632986] = { return Api.stats.BroadcastRevenueTransactions.parse_broadcastRevenueTransactions($0) }
|
dict[-2028632986] = { return Api.stats.BroadcastRevenueTransactions.parse_broadcastRevenueTransactions($0) }
|
||||||
dict[-328886473] = { return Api.stats.BroadcastRevenueWithdrawalUrl.parse_broadcastRevenueWithdrawalUrl($0) }
|
dict[-328886473] = { return Api.stats.BroadcastRevenueWithdrawalUrl.parse_broadcastRevenueWithdrawalUrl($0) }
|
||||||
dict[963421692] = { return Api.stats.BroadcastStats.parse_broadcastStats($0) }
|
dict[963421692] = { return Api.stats.BroadcastStats.parse_broadcastStats($0) }
|
||||||
@ -1358,7 +1362,7 @@ public extension Api {
|
|||||||
return parser(reader)
|
return parser(reader)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
telegramApiLog("Type constructor \(String(UInt32(bitPattern: signature), radix: 16, uppercase: false)) not found")
|
telegramApiLog("Type constructor \(String(signature, radix: 16, uppercase: false)) not found")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1452,6 +1456,8 @@ public extension Api {
|
|||||||
_1.serialize(buffer, boxed)
|
_1.serialize(buffer, boxed)
|
||||||
case let _1 as Api.BotMenuButton:
|
case let _1 as Api.BotMenuButton:
|
||||||
_1.serialize(buffer, boxed)
|
_1.serialize(buffer, boxed)
|
||||||
|
case let _1 as Api.BroadcastRevenueBalances:
|
||||||
|
_1.serialize(buffer, boxed)
|
||||||
case let _1 as Api.BroadcastRevenueTransaction:
|
case let _1 as Api.BroadcastRevenueTransaction:
|
||||||
_1.serialize(buffer, boxed)
|
_1.serialize(buffer, boxed)
|
||||||
case let _1 as Api.BusinessAwayMessage:
|
case let _1 as Api.BusinessAwayMessage:
|
||||||
|
@ -724,6 +724,50 @@ public extension Api {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public extension Api {
|
||||||
|
enum BroadcastRevenueBalances: TypeConstructorDescription {
|
||||||
|
case broadcastRevenueBalances(currentBalance: Int64, availableBalance: Int64, overallRevenue: Int64)
|
||||||
|
|
||||||
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
|
switch self {
|
||||||
|
case .broadcastRevenueBalances(let currentBalance, let availableBalance, let overallRevenue):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(-2076642874)
|
||||||
|
}
|
||||||
|
serializeInt64(currentBalance, buffer: buffer, boxed: false)
|
||||||
|
serializeInt64(availableBalance, buffer: buffer, boxed: false)
|
||||||
|
serializeInt64(overallRevenue, buffer: buffer, boxed: false)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
|
switch self {
|
||||||
|
case .broadcastRevenueBalances(let currentBalance, let availableBalance, let overallRevenue):
|
||||||
|
return ("broadcastRevenueBalances", [("currentBalance", currentBalance as Any), ("availableBalance", availableBalance as Any), ("overallRevenue", overallRevenue as Any)])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func parse_broadcastRevenueBalances(_ reader: BufferReader) -> BroadcastRevenueBalances? {
|
||||||
|
var _1: Int64?
|
||||||
|
_1 = reader.readInt64()
|
||||||
|
var _2: Int64?
|
||||||
|
_2 = reader.readInt64()
|
||||||
|
var _3: Int64?
|
||||||
|
_3 = reader.readInt64()
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = _3 != nil
|
||||||
|
if _c1 && _c2 && _c3 {
|
||||||
|
return Api.BroadcastRevenueBalances.broadcastRevenueBalances(currentBalance: _1!, availableBalance: _2!, overallRevenue: _3!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
public extension Api {
|
public extension Api {
|
||||||
enum BroadcastRevenueTransaction: TypeConstructorDescription {
|
enum BroadcastRevenueTransaction: TypeConstructorDescription {
|
||||||
case broadcastRevenueTransactionProceeds(amount: Int64, fromDate: Int32, toDate: Int32)
|
case broadcastRevenueTransactionProceeds(amount: Int64, fromDate: Int32, toDate: Int32)
|
||||||
@ -1166,49 +1210,3 @@ public extension Api {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public extension Api {
|
|
||||||
enum BusinessLocation: TypeConstructorDescription {
|
|
||||||
case businessLocation(flags: Int32, geoPoint: Api.GeoPoint?, address: String)
|
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
||||||
switch self {
|
|
||||||
case .businessLocation(let flags, let geoPoint, let address):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(-1403249929)
|
|
||||||
}
|
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
|
||||||
if Int(flags) & Int(1 << 0) != 0 {geoPoint!.serialize(buffer, true)}
|
|
||||||
serializeString(address, buffer: buffer, boxed: false)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public func descriptionFields() -> (String, [(String, Any)]) {
|
|
||||||
switch self {
|
|
||||||
case .businessLocation(let flags, let geoPoint, let address):
|
|
||||||
return ("businessLocation", [("flags", flags as Any), ("geoPoint", geoPoint as Any), ("address", address as Any)])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static func parse_businessLocation(_ reader: BufferReader) -> BusinessLocation? {
|
|
||||||
var _1: Int32?
|
|
||||||
_1 = reader.readInt32()
|
|
||||||
var _2: Api.GeoPoint?
|
|
||||||
if Int(_1!) & Int(1 << 0) != 0 {if let signature = reader.readInt32() {
|
|
||||||
_2 = Api.parse(reader, signature: signature) as? Api.GeoPoint
|
|
||||||
} }
|
|
||||||
var _3: String?
|
|
||||||
_3 = parseString(reader)
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = (Int(_1!) & Int(1 << 0) == 0) || _2 != nil
|
|
||||||
let _c3 = _3 != nil
|
|
||||||
if _c1 && _c2 && _c3 {
|
|
||||||
return Api.BusinessLocation.businessLocation(flags: _1!, geoPoint: _2, address: _3!)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -72,6 +72,7 @@ public extension Api {
|
|||||||
case updateBotStopped(userId: Int64, date: Int32, stopped: Api.Bool, qts: Int32)
|
case updateBotStopped(userId: Int64, date: Int32, stopped: Api.Bool, qts: Int32)
|
||||||
case updateBotWebhookJSON(data: Api.DataJSON)
|
case updateBotWebhookJSON(data: Api.DataJSON)
|
||||||
case updateBotWebhookJSONQuery(queryId: Int64, data: Api.DataJSON, timeout: Int32)
|
case updateBotWebhookJSONQuery(queryId: Int64, data: Api.DataJSON, timeout: Int32)
|
||||||
|
case updateBroadcastRevenueTransactions(balances: Api.BroadcastRevenueBalances)
|
||||||
case updateChannel(channelId: Int64)
|
case updateChannel(channelId: Int64)
|
||||||
case updateChannelAvailableMessages(channelId: Int64, availableMinId: Int32)
|
case updateChannelAvailableMessages(channelId: Int64, availableMinId: Int32)
|
||||||
case updateChannelMessageForwards(channelId: Int64, id: Int32, forwards: Int32)
|
case updateChannelMessageForwards(channelId: Int64, id: Int32, forwards: Int32)
|
||||||
@ -395,6 +396,12 @@ public extension Api {
|
|||||||
data.serialize(buffer, true)
|
data.serialize(buffer, true)
|
||||||
serializeInt32(timeout, buffer: buffer, boxed: false)
|
serializeInt32(timeout, buffer: buffer, boxed: false)
|
||||||
break
|
break
|
||||||
|
case .updateBroadcastRevenueTransactions(let balances):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(1550177112)
|
||||||
|
}
|
||||||
|
balances.serialize(buffer, true)
|
||||||
|
break
|
||||||
case .updateChannel(let channelId):
|
case .updateChannel(let channelId):
|
||||||
if boxed {
|
if boxed {
|
||||||
buffer.appendInt32(1666927625)
|
buffer.appendInt32(1666927625)
|
||||||
@ -1406,6 +1413,8 @@ public extension Api {
|
|||||||
return ("updateBotWebhookJSON", [("data", data as Any)])
|
return ("updateBotWebhookJSON", [("data", data as Any)])
|
||||||
case .updateBotWebhookJSONQuery(let queryId, let data, let timeout):
|
case .updateBotWebhookJSONQuery(let queryId, let data, let timeout):
|
||||||
return ("updateBotWebhookJSONQuery", [("queryId", queryId as Any), ("data", data as Any), ("timeout", timeout as Any)])
|
return ("updateBotWebhookJSONQuery", [("queryId", queryId as Any), ("data", data as Any), ("timeout", timeout as Any)])
|
||||||
|
case .updateBroadcastRevenueTransactions(let balances):
|
||||||
|
return ("updateBroadcastRevenueTransactions", [("balances", balances as Any)])
|
||||||
case .updateChannel(let channelId):
|
case .updateChannel(let channelId):
|
||||||
return ("updateChannel", [("channelId", channelId as Any)])
|
return ("updateChannel", [("channelId", channelId as Any)])
|
||||||
case .updateChannelAvailableMessages(let channelId, let availableMinId):
|
case .updateChannelAvailableMessages(let channelId, let availableMinId):
|
||||||
@ -2098,6 +2107,19 @@ public extension Api {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public static func parse_updateBroadcastRevenueTransactions(_ reader: BufferReader) -> Update? {
|
||||||
|
var _1: Api.BroadcastRevenueBalances?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_1 = Api.parse(reader, signature: signature) as? Api.BroadcastRevenueBalances
|
||||||
|
}
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
if _c1 {
|
||||||
|
return Api.Update.updateBroadcastRevenueTransactions(balances: _1!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
public static func parse_updateChannel(_ reader: BufferReader) -> Update? {
|
public static func parse_updateChannel(_ reader: BufferReader) -> Update? {
|
||||||
var _1: Int64?
|
var _1: Int64?
|
||||||
_1 = reader.readInt64()
|
_1 = reader.readInt64()
|
||||||
|
@ -1,3 +1,49 @@
|
|||||||
|
public extension Api {
|
||||||
|
enum BusinessLocation: TypeConstructorDescription {
|
||||||
|
case businessLocation(flags: Int32, geoPoint: Api.GeoPoint?, address: String)
|
||||||
|
|
||||||
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
|
switch self {
|
||||||
|
case .businessLocation(let flags, let geoPoint, let address):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(-1403249929)
|
||||||
|
}
|
||||||
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
|
if Int(flags) & Int(1 << 0) != 0 {geoPoint!.serialize(buffer, true)}
|
||||||
|
serializeString(address, buffer: buffer, boxed: false)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
|
switch self {
|
||||||
|
case .businessLocation(let flags, let geoPoint, let address):
|
||||||
|
return ("businessLocation", [("flags", flags as Any), ("geoPoint", geoPoint as Any), ("address", address as Any)])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func parse_businessLocation(_ reader: BufferReader) -> BusinessLocation? {
|
||||||
|
var _1: Int32?
|
||||||
|
_1 = reader.readInt32()
|
||||||
|
var _2: Api.GeoPoint?
|
||||||
|
if Int(_1!) & Int(1 << 0) != 0 {if let signature = reader.readInt32() {
|
||||||
|
_2 = Api.parse(reader, signature: signature) as? Api.GeoPoint
|
||||||
|
} }
|
||||||
|
var _3: String?
|
||||||
|
_3 = parseString(reader)
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = (Int(_1!) & Int(1 << 0) == 0) || _2 != nil
|
||||||
|
let _c3 = _3 != nil
|
||||||
|
if _c1 && _c2 && _c3 {
|
||||||
|
return Api.BusinessLocation.businessLocation(flags: _1!, geoPoint: _2, address: _3!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
public extension Api {
|
public extension Api {
|
||||||
enum BusinessRecipients: TypeConstructorDescription {
|
enum BusinessRecipients: TypeConstructorDescription {
|
||||||
case businessRecipients(flags: Int32, users: [Int64]?)
|
case businessRecipients(flags: Int32, users: [Int64]?)
|
||||||
|
@ -104,19 +104,17 @@ public extension Api.smsjobs {
|
|||||||
}
|
}
|
||||||
public extension Api.stats {
|
public extension Api.stats {
|
||||||
enum BroadcastRevenueStats: TypeConstructorDescription {
|
enum BroadcastRevenueStats: TypeConstructorDescription {
|
||||||
case broadcastRevenueStats(topHoursGraph: Api.StatsGraph, revenueGraph: Api.StatsGraph, currentBalance: Int64, availableBalance: Int64, overallRevenue: Int64, usdRate: Double)
|
case broadcastRevenueStats(topHoursGraph: Api.StatsGraph, revenueGraph: Api.StatsGraph, balances: Api.BroadcastRevenueBalances, usdRate: Double)
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
switch self {
|
switch self {
|
||||||
case .broadcastRevenueStats(let topHoursGraph, let revenueGraph, let currentBalance, let availableBalance, let overallRevenue, let usdRate):
|
case .broadcastRevenueStats(let topHoursGraph, let revenueGraph, let balances, let usdRate):
|
||||||
if boxed {
|
if boxed {
|
||||||
buffer.appendInt32(-797226067)
|
buffer.appendInt32(1409802903)
|
||||||
}
|
}
|
||||||
topHoursGraph.serialize(buffer, true)
|
topHoursGraph.serialize(buffer, true)
|
||||||
revenueGraph.serialize(buffer, true)
|
revenueGraph.serialize(buffer, true)
|
||||||
serializeInt64(currentBalance, buffer: buffer, boxed: false)
|
balances.serialize(buffer, true)
|
||||||
serializeInt64(availableBalance, buffer: buffer, boxed: false)
|
|
||||||
serializeInt64(overallRevenue, buffer: buffer, boxed: false)
|
|
||||||
serializeDouble(usdRate, buffer: buffer, boxed: false)
|
serializeDouble(usdRate, buffer: buffer, boxed: false)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -124,8 +122,8 @@ public extension Api.stats {
|
|||||||
|
|
||||||
public func descriptionFields() -> (String, [(String, Any)]) {
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
switch self {
|
switch self {
|
||||||
case .broadcastRevenueStats(let topHoursGraph, let revenueGraph, let currentBalance, let availableBalance, let overallRevenue, let usdRate):
|
case .broadcastRevenueStats(let topHoursGraph, let revenueGraph, let balances, let usdRate):
|
||||||
return ("broadcastRevenueStats", [("topHoursGraph", topHoursGraph as Any), ("revenueGraph", revenueGraph as Any), ("currentBalance", currentBalance as Any), ("availableBalance", availableBalance as Any), ("overallRevenue", overallRevenue as Any), ("usdRate", usdRate as Any)])
|
return ("broadcastRevenueStats", [("topHoursGraph", topHoursGraph as Any), ("revenueGraph", revenueGraph as Any), ("balances", balances as Any), ("usdRate", usdRate as Any)])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,22 +136,18 @@ public extension Api.stats {
|
|||||||
if let signature = reader.readInt32() {
|
if let signature = reader.readInt32() {
|
||||||
_2 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
_2 = Api.parse(reader, signature: signature) as? Api.StatsGraph
|
||||||
}
|
}
|
||||||
var _3: Int64?
|
var _3: Api.BroadcastRevenueBalances?
|
||||||
_3 = reader.readInt64()
|
if let signature = reader.readInt32() {
|
||||||
var _4: Int64?
|
_3 = Api.parse(reader, signature: signature) as? Api.BroadcastRevenueBalances
|
||||||
_4 = reader.readInt64()
|
}
|
||||||
var _5: Int64?
|
var _4: Double?
|
||||||
_5 = reader.readInt64()
|
_4 = reader.readDouble()
|
||||||
var _6: Double?
|
|
||||||
_6 = reader.readDouble()
|
|
||||||
let _c1 = _1 != nil
|
let _c1 = _1 != nil
|
||||||
let _c2 = _2 != nil
|
let _c2 = _2 != nil
|
||||||
let _c3 = _3 != nil
|
let _c3 = _3 != nil
|
||||||
let _c4 = _4 != nil
|
let _c4 = _4 != nil
|
||||||
let _c5 = _5 != nil
|
if _c1 && _c2 && _c3 && _c4 {
|
||||||
let _c6 = _6 != nil
|
return Api.stats.BroadcastRevenueStats.broadcastRevenueStats(topHoursGraph: _1!, revenueGraph: _2!, balances: _3!, usdRate: _4!)
|
||||||
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 {
|
|
||||||
return Api.stats.BroadcastRevenueStats.broadcastRevenueStats(topHoursGraph: _1!, revenueGraph: _2!, currentBalance: _3!, availableBalance: _4!, overallRevenue: _5!, usdRate: _6!)
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return nil
|
return nil
|
||||||
|
@ -5783,6 +5783,21 @@ public extension Api.functions.messages {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public extension Api.functions.messages {
|
||||||
|
static func getEmojiStickerGroups(hash: Int32) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.messages.EmojiGroups>) {
|
||||||
|
let buffer = Buffer()
|
||||||
|
buffer.appendInt32(500711669)
|
||||||
|
serializeInt32(hash, buffer: buffer, boxed: false)
|
||||||
|
return (FunctionDescription(name: "messages.getEmojiStickerGroups", parameters: [("hash", String(describing: hash))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.messages.EmojiGroups? in
|
||||||
|
let reader = BufferReader(buffer)
|
||||||
|
var result: Api.messages.EmojiGroups?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
result = Api.parse(reader, signature: signature) as? Api.messages.EmojiGroups
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
public extension Api.functions.messages {
|
public extension Api.functions.messages {
|
||||||
static func getEmojiStickers(hash: Int64) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.messages.AllStickers>) {
|
static func getEmojiStickers(hash: Int64) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.messages.AllStickers>) {
|
||||||
let buffer = Buffer()
|
let buffer = Buffer()
|
||||||
|
@ -231,6 +231,8 @@ public extension Api {
|
|||||||
public extension Api {
|
public extension Api {
|
||||||
enum EmojiGroup: TypeConstructorDescription {
|
enum EmojiGroup: TypeConstructorDescription {
|
||||||
case emojiGroup(title: String, iconEmojiId: Int64, emoticons: [String])
|
case emojiGroup(title: String, iconEmojiId: Int64, emoticons: [String])
|
||||||
|
case emojiGroupGreeting(title: String, iconEmojiId: Int64, emoticons: [String])
|
||||||
|
case emojiGroupPremium(title: String, iconEmojiId: Int64)
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
switch self {
|
switch self {
|
||||||
@ -246,6 +248,25 @@ public extension Api {
|
|||||||
serializeString(item, buffer: buffer, boxed: false)
|
serializeString(item, buffer: buffer, boxed: false)
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
|
case .emojiGroupGreeting(let title, let iconEmojiId, let emoticons):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(-2133693241)
|
||||||
|
}
|
||||||
|
serializeString(title, buffer: buffer, boxed: false)
|
||||||
|
serializeInt64(iconEmojiId, buffer: buffer, boxed: false)
|
||||||
|
buffer.appendInt32(481674261)
|
||||||
|
buffer.appendInt32(Int32(emoticons.count))
|
||||||
|
for item in emoticons {
|
||||||
|
serializeString(item, buffer: buffer, boxed: false)
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case .emojiGroupPremium(let title, let iconEmojiId):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(154914612)
|
||||||
|
}
|
||||||
|
serializeString(title, buffer: buffer, boxed: false)
|
||||||
|
serializeInt64(iconEmojiId, buffer: buffer, boxed: false)
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -253,6 +274,10 @@ public extension Api {
|
|||||||
switch self {
|
switch self {
|
||||||
case .emojiGroup(let title, let iconEmojiId, let emoticons):
|
case .emojiGroup(let title, let iconEmojiId, let emoticons):
|
||||||
return ("emojiGroup", [("title", title as Any), ("iconEmojiId", iconEmojiId as Any), ("emoticons", emoticons as Any)])
|
return ("emojiGroup", [("title", title as Any), ("iconEmojiId", iconEmojiId as Any), ("emoticons", emoticons as Any)])
|
||||||
|
case .emojiGroupGreeting(let title, let iconEmojiId, let emoticons):
|
||||||
|
return ("emojiGroupGreeting", [("title", title as Any), ("iconEmojiId", iconEmojiId as Any), ("emoticons", emoticons as Any)])
|
||||||
|
case .emojiGroupPremium(let title, let iconEmojiId):
|
||||||
|
return ("emojiGroupPremium", [("title", title as Any), ("iconEmojiId", iconEmojiId as Any)])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -275,6 +300,39 @@ public extension Api {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public static func parse_emojiGroupGreeting(_ reader: BufferReader) -> EmojiGroup? {
|
||||||
|
var _1: String?
|
||||||
|
_1 = parseString(reader)
|
||||||
|
var _2: Int64?
|
||||||
|
_2 = reader.readInt64()
|
||||||
|
var _3: [String]?
|
||||||
|
if let _ = reader.readInt32() {
|
||||||
|
_3 = Api.parseVector(reader, elementSignature: -1255641564, elementType: String.self)
|
||||||
|
}
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = _3 != nil
|
||||||
|
if _c1 && _c2 && _c3 {
|
||||||
|
return Api.EmojiGroup.emojiGroupGreeting(title: _1!, iconEmojiId: _2!, emoticons: _3!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static func parse_emojiGroupPremium(_ reader: BufferReader) -> EmojiGroup? {
|
||||||
|
var _1: String?
|
||||||
|
_1 = parseString(reader)
|
||||||
|
var _2: Int64?
|
||||||
|
_2 = reader.readInt64()
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
if _c1 && _c2 {
|
||||||
|
return Api.EmojiGroup.emojiGroupPremium(title: _1!, iconEmojiId: _2!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1032,97 +1090,3 @@ public extension Api {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public extension Api {
|
|
||||||
enum ExportedChatlistInvite: TypeConstructorDescription {
|
|
||||||
case exportedChatlistInvite(flags: Int32, title: String, url: String, peers: [Api.Peer])
|
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
||||||
switch self {
|
|
||||||
case .exportedChatlistInvite(let flags, let title, let url, let peers):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(206668204)
|
|
||||||
}
|
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
|
||||||
serializeString(title, buffer: buffer, boxed: false)
|
|
||||||
serializeString(url, buffer: buffer, boxed: false)
|
|
||||||
buffer.appendInt32(481674261)
|
|
||||||
buffer.appendInt32(Int32(peers.count))
|
|
||||||
for item in peers {
|
|
||||||
item.serialize(buffer, true)
|
|
||||||
}
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public func descriptionFields() -> (String, [(String, Any)]) {
|
|
||||||
switch self {
|
|
||||||
case .exportedChatlistInvite(let flags, let title, let url, let peers):
|
|
||||||
return ("exportedChatlistInvite", [("flags", flags as Any), ("title", title as Any), ("url", url as Any), ("peers", peers as Any)])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static func parse_exportedChatlistInvite(_ reader: BufferReader) -> ExportedChatlistInvite? {
|
|
||||||
var _1: Int32?
|
|
||||||
_1 = reader.readInt32()
|
|
||||||
var _2: String?
|
|
||||||
_2 = parseString(reader)
|
|
||||||
var _3: String?
|
|
||||||
_3 = parseString(reader)
|
|
||||||
var _4: [Api.Peer]?
|
|
||||||
if let _ = reader.readInt32() {
|
|
||||||
_4 = Api.parseVector(reader, elementSignature: 0, elementType: Api.Peer.self)
|
|
||||||
}
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = _2 != nil
|
|
||||||
let _c3 = _3 != nil
|
|
||||||
let _c4 = _4 != nil
|
|
||||||
if _c1 && _c2 && _c3 && _c4 {
|
|
||||||
return Api.ExportedChatlistInvite.exportedChatlistInvite(flags: _1!, title: _2!, url: _3!, peers: _4!)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public extension Api {
|
|
||||||
enum ExportedContactToken: TypeConstructorDescription {
|
|
||||||
case exportedContactToken(url: String, expires: Int32)
|
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
||||||
switch self {
|
|
||||||
case .exportedContactToken(let url, let expires):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(1103040667)
|
|
||||||
}
|
|
||||||
serializeString(url, buffer: buffer, boxed: false)
|
|
||||||
serializeInt32(expires, buffer: buffer, boxed: false)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public func descriptionFields() -> (String, [(String, Any)]) {
|
|
||||||
switch self {
|
|
||||||
case .exportedContactToken(let url, let expires):
|
|
||||||
return ("exportedContactToken", [("url", url as Any), ("expires", expires as Any)])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static func parse_exportedContactToken(_ reader: BufferReader) -> ExportedContactToken? {
|
|
||||||
var _1: String?
|
|
||||||
_1 = parseString(reader)
|
|
||||||
var _2: Int32?
|
|
||||||
_2 = reader.readInt32()
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = _2 != nil
|
|
||||||
if _c1 && _c2 {
|
|
||||||
return Api.ExportedContactToken.exportedContactToken(url: _1!, expires: _2!)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -1,3 +1,97 @@
|
|||||||
|
public extension Api {
|
||||||
|
enum ExportedChatlistInvite: TypeConstructorDescription {
|
||||||
|
case exportedChatlistInvite(flags: Int32, title: String, url: String, peers: [Api.Peer])
|
||||||
|
|
||||||
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
|
switch self {
|
||||||
|
case .exportedChatlistInvite(let flags, let title, let url, let peers):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(206668204)
|
||||||
|
}
|
||||||
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
|
serializeString(title, buffer: buffer, boxed: false)
|
||||||
|
serializeString(url, buffer: buffer, boxed: false)
|
||||||
|
buffer.appendInt32(481674261)
|
||||||
|
buffer.appendInt32(Int32(peers.count))
|
||||||
|
for item in peers {
|
||||||
|
item.serialize(buffer, true)
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
|
switch self {
|
||||||
|
case .exportedChatlistInvite(let flags, let title, let url, let peers):
|
||||||
|
return ("exportedChatlistInvite", [("flags", flags as Any), ("title", title as Any), ("url", url as Any), ("peers", peers as Any)])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func parse_exportedChatlistInvite(_ reader: BufferReader) -> ExportedChatlistInvite? {
|
||||||
|
var _1: Int32?
|
||||||
|
_1 = reader.readInt32()
|
||||||
|
var _2: String?
|
||||||
|
_2 = parseString(reader)
|
||||||
|
var _3: String?
|
||||||
|
_3 = parseString(reader)
|
||||||
|
var _4: [Api.Peer]?
|
||||||
|
if let _ = reader.readInt32() {
|
||||||
|
_4 = Api.parseVector(reader, elementSignature: 0, elementType: Api.Peer.self)
|
||||||
|
}
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = _3 != nil
|
||||||
|
let _c4 = _4 != nil
|
||||||
|
if _c1 && _c2 && _c3 && _c4 {
|
||||||
|
return Api.ExportedChatlistInvite.exportedChatlistInvite(flags: _1!, title: _2!, url: _3!, peers: _4!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public extension Api {
|
||||||
|
enum ExportedContactToken: TypeConstructorDescription {
|
||||||
|
case exportedContactToken(url: String, expires: Int32)
|
||||||
|
|
||||||
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
|
switch self {
|
||||||
|
case .exportedContactToken(let url, let expires):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(1103040667)
|
||||||
|
}
|
||||||
|
serializeString(url, buffer: buffer, boxed: false)
|
||||||
|
serializeInt32(expires, buffer: buffer, boxed: false)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
|
switch self {
|
||||||
|
case .exportedContactToken(let url, let expires):
|
||||||
|
return ("exportedContactToken", [("url", url as Any), ("expires", expires as Any)])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func parse_exportedContactToken(_ reader: BufferReader) -> ExportedContactToken? {
|
||||||
|
var _1: String?
|
||||||
|
_1 = parseString(reader)
|
||||||
|
var _2: Int32?
|
||||||
|
_2 = reader.readInt32()
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
if _c1 && _c2 {
|
||||||
|
return Api.ExportedContactToken.exportedContactToken(url: _1!, expires: _2!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
public extension Api {
|
public extension Api {
|
||||||
enum ExportedMessageLink: TypeConstructorDescription {
|
enum ExportedMessageLink: TypeConstructorDescription {
|
||||||
case exportedMessageLink(link: String, html: String)
|
case exportedMessageLink(link: String, html: String)
|
||||||
@ -1190,367 +1284,3 @@ public extension Api {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public extension Api {
|
|
||||||
enum InputBotInlineMessage: TypeConstructorDescription {
|
|
||||||
case inputBotInlineMessageGame(flags: Int32, replyMarkup: Api.ReplyMarkup?)
|
|
||||||
case inputBotInlineMessageMediaAuto(flags: Int32, message: String, entities: [Api.MessageEntity]?, replyMarkup: Api.ReplyMarkup?)
|
|
||||||
case inputBotInlineMessageMediaContact(flags: Int32, phoneNumber: String, firstName: String, lastName: String, vcard: String, replyMarkup: Api.ReplyMarkup?)
|
|
||||||
case inputBotInlineMessageMediaGeo(flags: Int32, geoPoint: Api.InputGeoPoint, heading: Int32?, period: Int32?, proximityNotificationRadius: Int32?, replyMarkup: Api.ReplyMarkup?)
|
|
||||||
case inputBotInlineMessageMediaInvoice(flags: Int32, title: String, description: String, photo: Api.InputWebDocument?, invoice: Api.Invoice, payload: Buffer, provider: String, providerData: Api.DataJSON, replyMarkup: Api.ReplyMarkup?)
|
|
||||||
case inputBotInlineMessageMediaVenue(flags: Int32, geoPoint: Api.InputGeoPoint, title: String, address: String, provider: String, venueId: String, venueType: String, replyMarkup: Api.ReplyMarkup?)
|
|
||||||
case inputBotInlineMessageMediaWebPage(flags: Int32, message: String, entities: [Api.MessageEntity]?, url: String, replyMarkup: Api.ReplyMarkup?)
|
|
||||||
case inputBotInlineMessageText(flags: Int32, message: String, entities: [Api.MessageEntity]?, replyMarkup: Api.ReplyMarkup?)
|
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
||||||
switch self {
|
|
||||||
case .inputBotInlineMessageGame(let flags, let replyMarkup):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(1262639204)
|
|
||||||
}
|
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
|
||||||
if Int(flags) & Int(1 << 2) != 0 {replyMarkup!.serialize(buffer, true)}
|
|
||||||
break
|
|
||||||
case .inputBotInlineMessageMediaAuto(let flags, let message, let entities, let replyMarkup):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(864077702)
|
|
||||||
}
|
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
|
||||||
serializeString(message, buffer: buffer, boxed: false)
|
|
||||||
if Int(flags) & Int(1 << 1) != 0 {buffer.appendInt32(481674261)
|
|
||||||
buffer.appendInt32(Int32(entities!.count))
|
|
||||||
for item in entities! {
|
|
||||||
item.serialize(buffer, true)
|
|
||||||
}}
|
|
||||||
if Int(flags) & Int(1 << 2) != 0 {replyMarkup!.serialize(buffer, true)}
|
|
||||||
break
|
|
||||||
case .inputBotInlineMessageMediaContact(let flags, let phoneNumber, let firstName, let lastName, let vcard, let replyMarkup):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(-1494368259)
|
|
||||||
}
|
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
|
||||||
serializeString(phoneNumber, buffer: buffer, boxed: false)
|
|
||||||
serializeString(firstName, buffer: buffer, boxed: false)
|
|
||||||
serializeString(lastName, buffer: buffer, boxed: false)
|
|
||||||
serializeString(vcard, buffer: buffer, boxed: false)
|
|
||||||
if Int(flags) & Int(1 << 2) != 0 {replyMarkup!.serialize(buffer, true)}
|
|
||||||
break
|
|
||||||
case .inputBotInlineMessageMediaGeo(let flags, let geoPoint, let heading, let period, let proximityNotificationRadius, let replyMarkup):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(-1768777083)
|
|
||||||
}
|
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
|
||||||
geoPoint.serialize(buffer, true)
|
|
||||||
if Int(flags) & Int(1 << 0) != 0 {serializeInt32(heading!, buffer: buffer, boxed: false)}
|
|
||||||
if Int(flags) & Int(1 << 1) != 0 {serializeInt32(period!, buffer: buffer, boxed: false)}
|
|
||||||
if Int(flags) & Int(1 << 3) != 0 {serializeInt32(proximityNotificationRadius!, buffer: buffer, boxed: false)}
|
|
||||||
if Int(flags) & Int(1 << 2) != 0 {replyMarkup!.serialize(buffer, true)}
|
|
||||||
break
|
|
||||||
case .inputBotInlineMessageMediaInvoice(let flags, let title, let description, let photo, let invoice, let payload, let provider, let providerData, let replyMarkup):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(-672693723)
|
|
||||||
}
|
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
|
||||||
serializeString(title, buffer: buffer, boxed: false)
|
|
||||||
serializeString(description, buffer: buffer, boxed: false)
|
|
||||||
if Int(flags) & Int(1 << 0) != 0 {photo!.serialize(buffer, true)}
|
|
||||||
invoice.serialize(buffer, true)
|
|
||||||
serializeBytes(payload, buffer: buffer, boxed: false)
|
|
||||||
serializeString(provider, buffer: buffer, boxed: false)
|
|
||||||
providerData.serialize(buffer, true)
|
|
||||||
if Int(flags) & Int(1 << 2) != 0 {replyMarkup!.serialize(buffer, true)}
|
|
||||||
break
|
|
||||||
case .inputBotInlineMessageMediaVenue(let flags, let geoPoint, let title, let address, let provider, let venueId, let venueType, let replyMarkup):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(1098628881)
|
|
||||||
}
|
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
|
||||||
geoPoint.serialize(buffer, true)
|
|
||||||
serializeString(title, buffer: buffer, boxed: false)
|
|
||||||
serializeString(address, buffer: buffer, boxed: false)
|
|
||||||
serializeString(provider, buffer: buffer, boxed: false)
|
|
||||||
serializeString(venueId, buffer: buffer, boxed: false)
|
|
||||||
serializeString(venueType, buffer: buffer, boxed: false)
|
|
||||||
if Int(flags) & Int(1 << 2) != 0 {replyMarkup!.serialize(buffer, true)}
|
|
||||||
break
|
|
||||||
case .inputBotInlineMessageMediaWebPage(let flags, let message, let entities, let url, let replyMarkup):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(-1109605104)
|
|
||||||
}
|
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
|
||||||
serializeString(message, buffer: buffer, boxed: false)
|
|
||||||
if Int(flags) & Int(1 << 1) != 0 {buffer.appendInt32(481674261)
|
|
||||||
buffer.appendInt32(Int32(entities!.count))
|
|
||||||
for item in entities! {
|
|
||||||
item.serialize(buffer, true)
|
|
||||||
}}
|
|
||||||
serializeString(url, buffer: buffer, boxed: false)
|
|
||||||
if Int(flags) & Int(1 << 2) != 0 {replyMarkup!.serialize(buffer, true)}
|
|
||||||
break
|
|
||||||
case .inputBotInlineMessageText(let flags, let message, let entities, let replyMarkup):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(1036876423)
|
|
||||||
}
|
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
|
||||||
serializeString(message, buffer: buffer, boxed: false)
|
|
||||||
if Int(flags) & Int(1 << 1) != 0 {buffer.appendInt32(481674261)
|
|
||||||
buffer.appendInt32(Int32(entities!.count))
|
|
||||||
for item in entities! {
|
|
||||||
item.serialize(buffer, true)
|
|
||||||
}}
|
|
||||||
if Int(flags) & Int(1 << 2) != 0 {replyMarkup!.serialize(buffer, true)}
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public func descriptionFields() -> (String, [(String, Any)]) {
|
|
||||||
switch self {
|
|
||||||
case .inputBotInlineMessageGame(let flags, let replyMarkup):
|
|
||||||
return ("inputBotInlineMessageGame", [("flags", flags as Any), ("replyMarkup", replyMarkup as Any)])
|
|
||||||
case .inputBotInlineMessageMediaAuto(let flags, let message, let entities, let replyMarkup):
|
|
||||||
return ("inputBotInlineMessageMediaAuto", [("flags", flags as Any), ("message", message as Any), ("entities", entities as Any), ("replyMarkup", replyMarkup as Any)])
|
|
||||||
case .inputBotInlineMessageMediaContact(let flags, let phoneNumber, let firstName, let lastName, let vcard, let replyMarkup):
|
|
||||||
return ("inputBotInlineMessageMediaContact", [("flags", flags as Any), ("phoneNumber", phoneNumber as Any), ("firstName", firstName as Any), ("lastName", lastName as Any), ("vcard", vcard as Any), ("replyMarkup", replyMarkup as Any)])
|
|
||||||
case .inputBotInlineMessageMediaGeo(let flags, let geoPoint, let heading, let period, let proximityNotificationRadius, let replyMarkup):
|
|
||||||
return ("inputBotInlineMessageMediaGeo", [("flags", flags as Any), ("geoPoint", geoPoint as Any), ("heading", heading as Any), ("period", period as Any), ("proximityNotificationRadius", proximityNotificationRadius as Any), ("replyMarkup", replyMarkup as Any)])
|
|
||||||
case .inputBotInlineMessageMediaInvoice(let flags, let title, let description, let photo, let invoice, let payload, let provider, let providerData, let replyMarkup):
|
|
||||||
return ("inputBotInlineMessageMediaInvoice", [("flags", flags as Any), ("title", title as Any), ("description", description as Any), ("photo", photo as Any), ("invoice", invoice as Any), ("payload", payload as Any), ("provider", provider as Any), ("providerData", providerData as Any), ("replyMarkup", replyMarkup as Any)])
|
|
||||||
case .inputBotInlineMessageMediaVenue(let flags, let geoPoint, let title, let address, let provider, let venueId, let venueType, let replyMarkup):
|
|
||||||
return ("inputBotInlineMessageMediaVenue", [("flags", flags as Any), ("geoPoint", geoPoint as Any), ("title", title as Any), ("address", address as Any), ("provider", provider as Any), ("venueId", venueId as Any), ("venueType", venueType as Any), ("replyMarkup", replyMarkup as Any)])
|
|
||||||
case .inputBotInlineMessageMediaWebPage(let flags, let message, let entities, let url, let replyMarkup):
|
|
||||||
return ("inputBotInlineMessageMediaWebPage", [("flags", flags as Any), ("message", message as Any), ("entities", entities as Any), ("url", url as Any), ("replyMarkup", replyMarkup as Any)])
|
|
||||||
case .inputBotInlineMessageText(let flags, let message, let entities, let replyMarkup):
|
|
||||||
return ("inputBotInlineMessageText", [("flags", flags as Any), ("message", message as Any), ("entities", entities as Any), ("replyMarkup", replyMarkup as Any)])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static func parse_inputBotInlineMessageGame(_ reader: BufferReader) -> InputBotInlineMessage? {
|
|
||||||
var _1: Int32?
|
|
||||||
_1 = reader.readInt32()
|
|
||||||
var _2: Api.ReplyMarkup?
|
|
||||||
if Int(_1!) & Int(1 << 2) != 0 {if let signature = reader.readInt32() {
|
|
||||||
_2 = Api.parse(reader, signature: signature) as? Api.ReplyMarkup
|
|
||||||
} }
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = (Int(_1!) & Int(1 << 2) == 0) || _2 != nil
|
|
||||||
if _c1 && _c2 {
|
|
||||||
return Api.InputBotInlineMessage.inputBotInlineMessageGame(flags: _1!, replyMarkup: _2)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static func parse_inputBotInlineMessageMediaAuto(_ reader: BufferReader) -> InputBotInlineMessage? {
|
|
||||||
var _1: Int32?
|
|
||||||
_1 = reader.readInt32()
|
|
||||||
var _2: String?
|
|
||||||
_2 = parseString(reader)
|
|
||||||
var _3: [Api.MessageEntity]?
|
|
||||||
if Int(_1!) & Int(1 << 1) != 0 {if let _ = reader.readInt32() {
|
|
||||||
_3 = Api.parseVector(reader, elementSignature: 0, elementType: Api.MessageEntity.self)
|
|
||||||
} }
|
|
||||||
var _4: Api.ReplyMarkup?
|
|
||||||
if Int(_1!) & Int(1 << 2) != 0 {if let signature = reader.readInt32() {
|
|
||||||
_4 = Api.parse(reader, signature: signature) as? Api.ReplyMarkup
|
|
||||||
} }
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = _2 != nil
|
|
||||||
let _c3 = (Int(_1!) & Int(1 << 1) == 0) || _3 != nil
|
|
||||||
let _c4 = (Int(_1!) & Int(1 << 2) == 0) || _4 != nil
|
|
||||||
if _c1 && _c2 && _c3 && _c4 {
|
|
||||||
return Api.InputBotInlineMessage.inputBotInlineMessageMediaAuto(flags: _1!, message: _2!, entities: _3, replyMarkup: _4)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static func parse_inputBotInlineMessageMediaContact(_ reader: BufferReader) -> InputBotInlineMessage? {
|
|
||||||
var _1: Int32?
|
|
||||||
_1 = reader.readInt32()
|
|
||||||
var _2: String?
|
|
||||||
_2 = parseString(reader)
|
|
||||||
var _3: String?
|
|
||||||
_3 = parseString(reader)
|
|
||||||
var _4: String?
|
|
||||||
_4 = parseString(reader)
|
|
||||||
var _5: String?
|
|
||||||
_5 = parseString(reader)
|
|
||||||
var _6: Api.ReplyMarkup?
|
|
||||||
if Int(_1!) & Int(1 << 2) != 0 {if let signature = reader.readInt32() {
|
|
||||||
_6 = Api.parse(reader, signature: signature) as? Api.ReplyMarkup
|
|
||||||
} }
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = _2 != nil
|
|
||||||
let _c3 = _3 != nil
|
|
||||||
let _c4 = _4 != nil
|
|
||||||
let _c5 = _5 != nil
|
|
||||||
let _c6 = (Int(_1!) & Int(1 << 2) == 0) || _6 != nil
|
|
||||||
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 {
|
|
||||||
return Api.InputBotInlineMessage.inputBotInlineMessageMediaContact(flags: _1!, phoneNumber: _2!, firstName: _3!, lastName: _4!, vcard: _5!, replyMarkup: _6)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static func parse_inputBotInlineMessageMediaGeo(_ reader: BufferReader) -> InputBotInlineMessage? {
|
|
||||||
var _1: Int32?
|
|
||||||
_1 = reader.readInt32()
|
|
||||||
var _2: Api.InputGeoPoint?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_2 = Api.parse(reader, signature: signature) as? Api.InputGeoPoint
|
|
||||||
}
|
|
||||||
var _3: Int32?
|
|
||||||
if Int(_1!) & Int(1 << 0) != 0 {_3 = reader.readInt32() }
|
|
||||||
var _4: Int32?
|
|
||||||
if Int(_1!) & Int(1 << 1) != 0 {_4 = reader.readInt32() }
|
|
||||||
var _5: Int32?
|
|
||||||
if Int(_1!) & Int(1 << 3) != 0 {_5 = reader.readInt32() }
|
|
||||||
var _6: Api.ReplyMarkup?
|
|
||||||
if Int(_1!) & Int(1 << 2) != 0 {if let signature = reader.readInt32() {
|
|
||||||
_6 = Api.parse(reader, signature: signature) as? Api.ReplyMarkup
|
|
||||||
} }
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = _2 != nil
|
|
||||||
let _c3 = (Int(_1!) & Int(1 << 0) == 0) || _3 != nil
|
|
||||||
let _c4 = (Int(_1!) & Int(1 << 1) == 0) || _4 != nil
|
|
||||||
let _c5 = (Int(_1!) & Int(1 << 3) == 0) || _5 != nil
|
|
||||||
let _c6 = (Int(_1!) & Int(1 << 2) == 0) || _6 != nil
|
|
||||||
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 {
|
|
||||||
return Api.InputBotInlineMessage.inputBotInlineMessageMediaGeo(flags: _1!, geoPoint: _2!, heading: _3, period: _4, proximityNotificationRadius: _5, replyMarkup: _6)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static func parse_inputBotInlineMessageMediaInvoice(_ reader: BufferReader) -> InputBotInlineMessage? {
|
|
||||||
var _1: Int32?
|
|
||||||
_1 = reader.readInt32()
|
|
||||||
var _2: String?
|
|
||||||
_2 = parseString(reader)
|
|
||||||
var _3: String?
|
|
||||||
_3 = parseString(reader)
|
|
||||||
var _4: Api.InputWebDocument?
|
|
||||||
if Int(_1!) & Int(1 << 0) != 0 {if let signature = reader.readInt32() {
|
|
||||||
_4 = Api.parse(reader, signature: signature) as? Api.InputWebDocument
|
|
||||||
} }
|
|
||||||
var _5: Api.Invoice?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_5 = Api.parse(reader, signature: signature) as? Api.Invoice
|
|
||||||
}
|
|
||||||
var _6: Buffer?
|
|
||||||
_6 = parseBytes(reader)
|
|
||||||
var _7: String?
|
|
||||||
_7 = parseString(reader)
|
|
||||||
var _8: Api.DataJSON?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_8 = Api.parse(reader, signature: signature) as? Api.DataJSON
|
|
||||||
}
|
|
||||||
var _9: Api.ReplyMarkup?
|
|
||||||
if Int(_1!) & Int(1 << 2) != 0 {if let signature = reader.readInt32() {
|
|
||||||
_9 = Api.parse(reader, signature: signature) as? Api.ReplyMarkup
|
|
||||||
} }
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = _2 != nil
|
|
||||||
let _c3 = _3 != nil
|
|
||||||
let _c4 = (Int(_1!) & Int(1 << 0) == 0) || _4 != nil
|
|
||||||
let _c5 = _5 != nil
|
|
||||||
let _c6 = _6 != nil
|
|
||||||
let _c7 = _7 != nil
|
|
||||||
let _c8 = _8 != nil
|
|
||||||
let _c9 = (Int(_1!) & Int(1 << 2) == 0) || _9 != nil
|
|
||||||
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 {
|
|
||||||
return Api.InputBotInlineMessage.inputBotInlineMessageMediaInvoice(flags: _1!, title: _2!, description: _3!, photo: _4, invoice: _5!, payload: _6!, provider: _7!, providerData: _8!, replyMarkup: _9)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static func parse_inputBotInlineMessageMediaVenue(_ reader: BufferReader) -> InputBotInlineMessage? {
|
|
||||||
var _1: Int32?
|
|
||||||
_1 = reader.readInt32()
|
|
||||||
var _2: Api.InputGeoPoint?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_2 = Api.parse(reader, signature: signature) as? Api.InputGeoPoint
|
|
||||||
}
|
|
||||||
var _3: String?
|
|
||||||
_3 = parseString(reader)
|
|
||||||
var _4: String?
|
|
||||||
_4 = parseString(reader)
|
|
||||||
var _5: String?
|
|
||||||
_5 = parseString(reader)
|
|
||||||
var _6: String?
|
|
||||||
_6 = parseString(reader)
|
|
||||||
var _7: String?
|
|
||||||
_7 = parseString(reader)
|
|
||||||
var _8: Api.ReplyMarkup?
|
|
||||||
if Int(_1!) & Int(1 << 2) != 0 {if let signature = reader.readInt32() {
|
|
||||||
_8 = Api.parse(reader, signature: signature) as? Api.ReplyMarkup
|
|
||||||
} }
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = _2 != nil
|
|
||||||
let _c3 = _3 != nil
|
|
||||||
let _c4 = _4 != nil
|
|
||||||
let _c5 = _5 != nil
|
|
||||||
let _c6 = _6 != nil
|
|
||||||
let _c7 = _7 != nil
|
|
||||||
let _c8 = (Int(_1!) & Int(1 << 2) == 0) || _8 != nil
|
|
||||||
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 {
|
|
||||||
return Api.InputBotInlineMessage.inputBotInlineMessageMediaVenue(flags: _1!, geoPoint: _2!, title: _3!, address: _4!, provider: _5!, venueId: _6!, venueType: _7!, replyMarkup: _8)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static func parse_inputBotInlineMessageMediaWebPage(_ reader: BufferReader) -> InputBotInlineMessage? {
|
|
||||||
var _1: Int32?
|
|
||||||
_1 = reader.readInt32()
|
|
||||||
var _2: String?
|
|
||||||
_2 = parseString(reader)
|
|
||||||
var _3: [Api.MessageEntity]?
|
|
||||||
if Int(_1!) & Int(1 << 1) != 0 {if let _ = reader.readInt32() {
|
|
||||||
_3 = Api.parseVector(reader, elementSignature: 0, elementType: Api.MessageEntity.self)
|
|
||||||
} }
|
|
||||||
var _4: String?
|
|
||||||
_4 = parseString(reader)
|
|
||||||
var _5: Api.ReplyMarkup?
|
|
||||||
if Int(_1!) & Int(1 << 2) != 0 {if let signature = reader.readInt32() {
|
|
||||||
_5 = Api.parse(reader, signature: signature) as? Api.ReplyMarkup
|
|
||||||
} }
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = _2 != nil
|
|
||||||
let _c3 = (Int(_1!) & Int(1 << 1) == 0) || _3 != nil
|
|
||||||
let _c4 = _4 != nil
|
|
||||||
let _c5 = (Int(_1!) & Int(1 << 2) == 0) || _5 != nil
|
|
||||||
if _c1 && _c2 && _c3 && _c4 && _c5 {
|
|
||||||
return Api.InputBotInlineMessage.inputBotInlineMessageMediaWebPage(flags: _1!, message: _2!, entities: _3, url: _4!, replyMarkup: _5)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static func parse_inputBotInlineMessageText(_ reader: BufferReader) -> InputBotInlineMessage? {
|
|
||||||
var _1: Int32?
|
|
||||||
_1 = reader.readInt32()
|
|
||||||
var _2: String?
|
|
||||||
_2 = parseString(reader)
|
|
||||||
var _3: [Api.MessageEntity]?
|
|
||||||
if Int(_1!) & Int(1 << 1) != 0 {if let _ = reader.readInt32() {
|
|
||||||
_3 = Api.parseVector(reader, elementSignature: 0, elementType: Api.MessageEntity.self)
|
|
||||||
} }
|
|
||||||
var _4: Api.ReplyMarkup?
|
|
||||||
if Int(_1!) & Int(1 << 2) != 0 {if let signature = reader.readInt32() {
|
|
||||||
_4 = Api.parse(reader, signature: signature) as? Api.ReplyMarkup
|
|
||||||
} }
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = _2 != nil
|
|
||||||
let _c3 = (Int(_1!) & Int(1 << 1) == 0) || _3 != nil
|
|
||||||
let _c4 = (Int(_1!) & Int(1 << 2) == 0) || _4 != nil
|
|
||||||
if _c1 && _c2 && _c3 && _c4 {
|
|
||||||
return Api.InputBotInlineMessage.inputBotInlineMessageText(flags: _1!, message: _2!, entities: _3, replyMarkup: _4)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -1,3 +1,367 @@
|
|||||||
|
public extension Api {
|
||||||
|
enum InputBotInlineMessage: TypeConstructorDescription {
|
||||||
|
case inputBotInlineMessageGame(flags: Int32, replyMarkup: Api.ReplyMarkup?)
|
||||||
|
case inputBotInlineMessageMediaAuto(flags: Int32, message: String, entities: [Api.MessageEntity]?, replyMarkup: Api.ReplyMarkup?)
|
||||||
|
case inputBotInlineMessageMediaContact(flags: Int32, phoneNumber: String, firstName: String, lastName: String, vcard: String, replyMarkup: Api.ReplyMarkup?)
|
||||||
|
case inputBotInlineMessageMediaGeo(flags: Int32, geoPoint: Api.InputGeoPoint, heading: Int32?, period: Int32?, proximityNotificationRadius: Int32?, replyMarkup: Api.ReplyMarkup?)
|
||||||
|
case inputBotInlineMessageMediaInvoice(flags: Int32, title: String, description: String, photo: Api.InputWebDocument?, invoice: Api.Invoice, payload: Buffer, provider: String, providerData: Api.DataJSON, replyMarkup: Api.ReplyMarkup?)
|
||||||
|
case inputBotInlineMessageMediaVenue(flags: Int32, geoPoint: Api.InputGeoPoint, title: String, address: String, provider: String, venueId: String, venueType: String, replyMarkup: Api.ReplyMarkup?)
|
||||||
|
case inputBotInlineMessageMediaWebPage(flags: Int32, message: String, entities: [Api.MessageEntity]?, url: String, replyMarkup: Api.ReplyMarkup?)
|
||||||
|
case inputBotInlineMessageText(flags: Int32, message: String, entities: [Api.MessageEntity]?, replyMarkup: Api.ReplyMarkup?)
|
||||||
|
|
||||||
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
|
switch self {
|
||||||
|
case .inputBotInlineMessageGame(let flags, let replyMarkup):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(1262639204)
|
||||||
|
}
|
||||||
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
|
if Int(flags) & Int(1 << 2) != 0 {replyMarkup!.serialize(buffer, true)}
|
||||||
|
break
|
||||||
|
case .inputBotInlineMessageMediaAuto(let flags, let message, let entities, let replyMarkup):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(864077702)
|
||||||
|
}
|
||||||
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
|
serializeString(message, buffer: buffer, boxed: false)
|
||||||
|
if Int(flags) & Int(1 << 1) != 0 {buffer.appendInt32(481674261)
|
||||||
|
buffer.appendInt32(Int32(entities!.count))
|
||||||
|
for item in entities! {
|
||||||
|
item.serialize(buffer, true)
|
||||||
|
}}
|
||||||
|
if Int(flags) & Int(1 << 2) != 0 {replyMarkup!.serialize(buffer, true)}
|
||||||
|
break
|
||||||
|
case .inputBotInlineMessageMediaContact(let flags, let phoneNumber, let firstName, let lastName, let vcard, let replyMarkup):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(-1494368259)
|
||||||
|
}
|
||||||
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
|
serializeString(phoneNumber, buffer: buffer, boxed: false)
|
||||||
|
serializeString(firstName, buffer: buffer, boxed: false)
|
||||||
|
serializeString(lastName, buffer: buffer, boxed: false)
|
||||||
|
serializeString(vcard, buffer: buffer, boxed: false)
|
||||||
|
if Int(flags) & Int(1 << 2) != 0 {replyMarkup!.serialize(buffer, true)}
|
||||||
|
break
|
||||||
|
case .inputBotInlineMessageMediaGeo(let flags, let geoPoint, let heading, let period, let proximityNotificationRadius, let replyMarkup):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(-1768777083)
|
||||||
|
}
|
||||||
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
|
geoPoint.serialize(buffer, true)
|
||||||
|
if Int(flags) & Int(1 << 0) != 0 {serializeInt32(heading!, buffer: buffer, boxed: false)}
|
||||||
|
if Int(flags) & Int(1 << 1) != 0 {serializeInt32(period!, buffer: buffer, boxed: false)}
|
||||||
|
if Int(flags) & Int(1 << 3) != 0 {serializeInt32(proximityNotificationRadius!, buffer: buffer, boxed: false)}
|
||||||
|
if Int(flags) & Int(1 << 2) != 0 {replyMarkup!.serialize(buffer, true)}
|
||||||
|
break
|
||||||
|
case .inputBotInlineMessageMediaInvoice(let flags, let title, let description, let photo, let invoice, let payload, let provider, let providerData, let replyMarkup):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(-672693723)
|
||||||
|
}
|
||||||
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
|
serializeString(title, buffer: buffer, boxed: false)
|
||||||
|
serializeString(description, buffer: buffer, boxed: false)
|
||||||
|
if Int(flags) & Int(1 << 0) != 0 {photo!.serialize(buffer, true)}
|
||||||
|
invoice.serialize(buffer, true)
|
||||||
|
serializeBytes(payload, buffer: buffer, boxed: false)
|
||||||
|
serializeString(provider, buffer: buffer, boxed: false)
|
||||||
|
providerData.serialize(buffer, true)
|
||||||
|
if Int(flags) & Int(1 << 2) != 0 {replyMarkup!.serialize(buffer, true)}
|
||||||
|
break
|
||||||
|
case .inputBotInlineMessageMediaVenue(let flags, let geoPoint, let title, let address, let provider, let venueId, let venueType, let replyMarkup):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(1098628881)
|
||||||
|
}
|
||||||
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
|
geoPoint.serialize(buffer, true)
|
||||||
|
serializeString(title, buffer: buffer, boxed: false)
|
||||||
|
serializeString(address, buffer: buffer, boxed: false)
|
||||||
|
serializeString(provider, buffer: buffer, boxed: false)
|
||||||
|
serializeString(venueId, buffer: buffer, boxed: false)
|
||||||
|
serializeString(venueType, buffer: buffer, boxed: false)
|
||||||
|
if Int(flags) & Int(1 << 2) != 0 {replyMarkup!.serialize(buffer, true)}
|
||||||
|
break
|
||||||
|
case .inputBotInlineMessageMediaWebPage(let flags, let message, let entities, let url, let replyMarkup):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(-1109605104)
|
||||||
|
}
|
||||||
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
|
serializeString(message, buffer: buffer, boxed: false)
|
||||||
|
if Int(flags) & Int(1 << 1) != 0 {buffer.appendInt32(481674261)
|
||||||
|
buffer.appendInt32(Int32(entities!.count))
|
||||||
|
for item in entities! {
|
||||||
|
item.serialize(buffer, true)
|
||||||
|
}}
|
||||||
|
serializeString(url, buffer: buffer, boxed: false)
|
||||||
|
if Int(flags) & Int(1 << 2) != 0 {replyMarkup!.serialize(buffer, true)}
|
||||||
|
break
|
||||||
|
case .inputBotInlineMessageText(let flags, let message, let entities, let replyMarkup):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(1036876423)
|
||||||
|
}
|
||||||
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
|
serializeString(message, buffer: buffer, boxed: false)
|
||||||
|
if Int(flags) & Int(1 << 1) != 0 {buffer.appendInt32(481674261)
|
||||||
|
buffer.appendInt32(Int32(entities!.count))
|
||||||
|
for item in entities! {
|
||||||
|
item.serialize(buffer, true)
|
||||||
|
}}
|
||||||
|
if Int(flags) & Int(1 << 2) != 0 {replyMarkup!.serialize(buffer, true)}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
|
switch self {
|
||||||
|
case .inputBotInlineMessageGame(let flags, let replyMarkup):
|
||||||
|
return ("inputBotInlineMessageGame", [("flags", flags as Any), ("replyMarkup", replyMarkup as Any)])
|
||||||
|
case .inputBotInlineMessageMediaAuto(let flags, let message, let entities, let replyMarkup):
|
||||||
|
return ("inputBotInlineMessageMediaAuto", [("flags", flags as Any), ("message", message as Any), ("entities", entities as Any), ("replyMarkup", replyMarkup as Any)])
|
||||||
|
case .inputBotInlineMessageMediaContact(let flags, let phoneNumber, let firstName, let lastName, let vcard, let replyMarkup):
|
||||||
|
return ("inputBotInlineMessageMediaContact", [("flags", flags as Any), ("phoneNumber", phoneNumber as Any), ("firstName", firstName as Any), ("lastName", lastName as Any), ("vcard", vcard as Any), ("replyMarkup", replyMarkup as Any)])
|
||||||
|
case .inputBotInlineMessageMediaGeo(let flags, let geoPoint, let heading, let period, let proximityNotificationRadius, let replyMarkup):
|
||||||
|
return ("inputBotInlineMessageMediaGeo", [("flags", flags as Any), ("geoPoint", geoPoint as Any), ("heading", heading as Any), ("period", period as Any), ("proximityNotificationRadius", proximityNotificationRadius as Any), ("replyMarkup", replyMarkup as Any)])
|
||||||
|
case .inputBotInlineMessageMediaInvoice(let flags, let title, let description, let photo, let invoice, let payload, let provider, let providerData, let replyMarkup):
|
||||||
|
return ("inputBotInlineMessageMediaInvoice", [("flags", flags as Any), ("title", title as Any), ("description", description as Any), ("photo", photo as Any), ("invoice", invoice as Any), ("payload", payload as Any), ("provider", provider as Any), ("providerData", providerData as Any), ("replyMarkup", replyMarkup as Any)])
|
||||||
|
case .inputBotInlineMessageMediaVenue(let flags, let geoPoint, let title, let address, let provider, let venueId, let venueType, let replyMarkup):
|
||||||
|
return ("inputBotInlineMessageMediaVenue", [("flags", flags as Any), ("geoPoint", geoPoint as Any), ("title", title as Any), ("address", address as Any), ("provider", provider as Any), ("venueId", venueId as Any), ("venueType", venueType as Any), ("replyMarkup", replyMarkup as Any)])
|
||||||
|
case .inputBotInlineMessageMediaWebPage(let flags, let message, let entities, let url, let replyMarkup):
|
||||||
|
return ("inputBotInlineMessageMediaWebPage", [("flags", flags as Any), ("message", message as Any), ("entities", entities as Any), ("url", url as Any), ("replyMarkup", replyMarkup as Any)])
|
||||||
|
case .inputBotInlineMessageText(let flags, let message, let entities, let replyMarkup):
|
||||||
|
return ("inputBotInlineMessageText", [("flags", flags as Any), ("message", message as Any), ("entities", entities as Any), ("replyMarkup", replyMarkup as Any)])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func parse_inputBotInlineMessageGame(_ reader: BufferReader) -> InputBotInlineMessage? {
|
||||||
|
var _1: Int32?
|
||||||
|
_1 = reader.readInt32()
|
||||||
|
var _2: Api.ReplyMarkup?
|
||||||
|
if Int(_1!) & Int(1 << 2) != 0 {if let signature = reader.readInt32() {
|
||||||
|
_2 = Api.parse(reader, signature: signature) as? Api.ReplyMarkup
|
||||||
|
} }
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = (Int(_1!) & Int(1 << 2) == 0) || _2 != nil
|
||||||
|
if _c1 && _c2 {
|
||||||
|
return Api.InputBotInlineMessage.inputBotInlineMessageGame(flags: _1!, replyMarkup: _2)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static func parse_inputBotInlineMessageMediaAuto(_ reader: BufferReader) -> InputBotInlineMessage? {
|
||||||
|
var _1: Int32?
|
||||||
|
_1 = reader.readInt32()
|
||||||
|
var _2: String?
|
||||||
|
_2 = parseString(reader)
|
||||||
|
var _3: [Api.MessageEntity]?
|
||||||
|
if Int(_1!) & Int(1 << 1) != 0 {if let _ = reader.readInt32() {
|
||||||
|
_3 = Api.parseVector(reader, elementSignature: 0, elementType: Api.MessageEntity.self)
|
||||||
|
} }
|
||||||
|
var _4: Api.ReplyMarkup?
|
||||||
|
if Int(_1!) & Int(1 << 2) != 0 {if let signature = reader.readInt32() {
|
||||||
|
_4 = Api.parse(reader, signature: signature) as? Api.ReplyMarkup
|
||||||
|
} }
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = (Int(_1!) & Int(1 << 1) == 0) || _3 != nil
|
||||||
|
let _c4 = (Int(_1!) & Int(1 << 2) == 0) || _4 != nil
|
||||||
|
if _c1 && _c2 && _c3 && _c4 {
|
||||||
|
return Api.InputBotInlineMessage.inputBotInlineMessageMediaAuto(flags: _1!, message: _2!, entities: _3, replyMarkup: _4)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static func parse_inputBotInlineMessageMediaContact(_ reader: BufferReader) -> InputBotInlineMessage? {
|
||||||
|
var _1: Int32?
|
||||||
|
_1 = reader.readInt32()
|
||||||
|
var _2: String?
|
||||||
|
_2 = parseString(reader)
|
||||||
|
var _3: String?
|
||||||
|
_3 = parseString(reader)
|
||||||
|
var _4: String?
|
||||||
|
_4 = parseString(reader)
|
||||||
|
var _5: String?
|
||||||
|
_5 = parseString(reader)
|
||||||
|
var _6: Api.ReplyMarkup?
|
||||||
|
if Int(_1!) & Int(1 << 2) != 0 {if let signature = reader.readInt32() {
|
||||||
|
_6 = Api.parse(reader, signature: signature) as? Api.ReplyMarkup
|
||||||
|
} }
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = _3 != nil
|
||||||
|
let _c4 = _4 != nil
|
||||||
|
let _c5 = _5 != nil
|
||||||
|
let _c6 = (Int(_1!) & Int(1 << 2) == 0) || _6 != nil
|
||||||
|
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 {
|
||||||
|
return Api.InputBotInlineMessage.inputBotInlineMessageMediaContact(flags: _1!, phoneNumber: _2!, firstName: _3!, lastName: _4!, vcard: _5!, replyMarkup: _6)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static func parse_inputBotInlineMessageMediaGeo(_ reader: BufferReader) -> InputBotInlineMessage? {
|
||||||
|
var _1: Int32?
|
||||||
|
_1 = reader.readInt32()
|
||||||
|
var _2: Api.InputGeoPoint?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_2 = Api.parse(reader, signature: signature) as? Api.InputGeoPoint
|
||||||
|
}
|
||||||
|
var _3: Int32?
|
||||||
|
if Int(_1!) & Int(1 << 0) != 0 {_3 = reader.readInt32() }
|
||||||
|
var _4: Int32?
|
||||||
|
if Int(_1!) & Int(1 << 1) != 0 {_4 = reader.readInt32() }
|
||||||
|
var _5: Int32?
|
||||||
|
if Int(_1!) & Int(1 << 3) != 0 {_5 = reader.readInt32() }
|
||||||
|
var _6: Api.ReplyMarkup?
|
||||||
|
if Int(_1!) & Int(1 << 2) != 0 {if let signature = reader.readInt32() {
|
||||||
|
_6 = Api.parse(reader, signature: signature) as? Api.ReplyMarkup
|
||||||
|
} }
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = (Int(_1!) & Int(1 << 0) == 0) || _3 != nil
|
||||||
|
let _c4 = (Int(_1!) & Int(1 << 1) == 0) || _4 != nil
|
||||||
|
let _c5 = (Int(_1!) & Int(1 << 3) == 0) || _5 != nil
|
||||||
|
let _c6 = (Int(_1!) & Int(1 << 2) == 0) || _6 != nil
|
||||||
|
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 {
|
||||||
|
return Api.InputBotInlineMessage.inputBotInlineMessageMediaGeo(flags: _1!, geoPoint: _2!, heading: _3, period: _4, proximityNotificationRadius: _5, replyMarkup: _6)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static func parse_inputBotInlineMessageMediaInvoice(_ reader: BufferReader) -> InputBotInlineMessage? {
|
||||||
|
var _1: Int32?
|
||||||
|
_1 = reader.readInt32()
|
||||||
|
var _2: String?
|
||||||
|
_2 = parseString(reader)
|
||||||
|
var _3: String?
|
||||||
|
_3 = parseString(reader)
|
||||||
|
var _4: Api.InputWebDocument?
|
||||||
|
if Int(_1!) & Int(1 << 0) != 0 {if let signature = reader.readInt32() {
|
||||||
|
_4 = Api.parse(reader, signature: signature) as? Api.InputWebDocument
|
||||||
|
} }
|
||||||
|
var _5: Api.Invoice?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_5 = Api.parse(reader, signature: signature) as? Api.Invoice
|
||||||
|
}
|
||||||
|
var _6: Buffer?
|
||||||
|
_6 = parseBytes(reader)
|
||||||
|
var _7: String?
|
||||||
|
_7 = parseString(reader)
|
||||||
|
var _8: Api.DataJSON?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_8 = Api.parse(reader, signature: signature) as? Api.DataJSON
|
||||||
|
}
|
||||||
|
var _9: Api.ReplyMarkup?
|
||||||
|
if Int(_1!) & Int(1 << 2) != 0 {if let signature = reader.readInt32() {
|
||||||
|
_9 = Api.parse(reader, signature: signature) as? Api.ReplyMarkup
|
||||||
|
} }
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = _3 != nil
|
||||||
|
let _c4 = (Int(_1!) & Int(1 << 0) == 0) || _4 != nil
|
||||||
|
let _c5 = _5 != nil
|
||||||
|
let _c6 = _6 != nil
|
||||||
|
let _c7 = _7 != nil
|
||||||
|
let _c8 = _8 != nil
|
||||||
|
let _c9 = (Int(_1!) & Int(1 << 2) == 0) || _9 != nil
|
||||||
|
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 {
|
||||||
|
return Api.InputBotInlineMessage.inputBotInlineMessageMediaInvoice(flags: _1!, title: _2!, description: _3!, photo: _4, invoice: _5!, payload: _6!, provider: _7!, providerData: _8!, replyMarkup: _9)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static func parse_inputBotInlineMessageMediaVenue(_ reader: BufferReader) -> InputBotInlineMessage? {
|
||||||
|
var _1: Int32?
|
||||||
|
_1 = reader.readInt32()
|
||||||
|
var _2: Api.InputGeoPoint?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_2 = Api.parse(reader, signature: signature) as? Api.InputGeoPoint
|
||||||
|
}
|
||||||
|
var _3: String?
|
||||||
|
_3 = parseString(reader)
|
||||||
|
var _4: String?
|
||||||
|
_4 = parseString(reader)
|
||||||
|
var _5: String?
|
||||||
|
_5 = parseString(reader)
|
||||||
|
var _6: String?
|
||||||
|
_6 = parseString(reader)
|
||||||
|
var _7: String?
|
||||||
|
_7 = parseString(reader)
|
||||||
|
var _8: Api.ReplyMarkup?
|
||||||
|
if Int(_1!) & Int(1 << 2) != 0 {if let signature = reader.readInt32() {
|
||||||
|
_8 = Api.parse(reader, signature: signature) as? Api.ReplyMarkup
|
||||||
|
} }
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = _3 != nil
|
||||||
|
let _c4 = _4 != nil
|
||||||
|
let _c5 = _5 != nil
|
||||||
|
let _c6 = _6 != nil
|
||||||
|
let _c7 = _7 != nil
|
||||||
|
let _c8 = (Int(_1!) & Int(1 << 2) == 0) || _8 != nil
|
||||||
|
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 {
|
||||||
|
return Api.InputBotInlineMessage.inputBotInlineMessageMediaVenue(flags: _1!, geoPoint: _2!, title: _3!, address: _4!, provider: _5!, venueId: _6!, venueType: _7!, replyMarkup: _8)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static func parse_inputBotInlineMessageMediaWebPage(_ reader: BufferReader) -> InputBotInlineMessage? {
|
||||||
|
var _1: Int32?
|
||||||
|
_1 = reader.readInt32()
|
||||||
|
var _2: String?
|
||||||
|
_2 = parseString(reader)
|
||||||
|
var _3: [Api.MessageEntity]?
|
||||||
|
if Int(_1!) & Int(1 << 1) != 0 {if let _ = reader.readInt32() {
|
||||||
|
_3 = Api.parseVector(reader, elementSignature: 0, elementType: Api.MessageEntity.self)
|
||||||
|
} }
|
||||||
|
var _4: String?
|
||||||
|
_4 = parseString(reader)
|
||||||
|
var _5: Api.ReplyMarkup?
|
||||||
|
if Int(_1!) & Int(1 << 2) != 0 {if let signature = reader.readInt32() {
|
||||||
|
_5 = Api.parse(reader, signature: signature) as? Api.ReplyMarkup
|
||||||
|
} }
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = (Int(_1!) & Int(1 << 1) == 0) || _3 != nil
|
||||||
|
let _c4 = _4 != nil
|
||||||
|
let _c5 = (Int(_1!) & Int(1 << 2) == 0) || _5 != nil
|
||||||
|
if _c1 && _c2 && _c3 && _c4 && _c5 {
|
||||||
|
return Api.InputBotInlineMessage.inputBotInlineMessageMediaWebPage(flags: _1!, message: _2!, entities: _3, url: _4!, replyMarkup: _5)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static func parse_inputBotInlineMessageText(_ reader: BufferReader) -> InputBotInlineMessage? {
|
||||||
|
var _1: Int32?
|
||||||
|
_1 = reader.readInt32()
|
||||||
|
var _2: String?
|
||||||
|
_2 = parseString(reader)
|
||||||
|
var _3: [Api.MessageEntity]?
|
||||||
|
if Int(_1!) & Int(1 << 1) != 0 {if let _ = reader.readInt32() {
|
||||||
|
_3 = Api.parseVector(reader, elementSignature: 0, elementType: Api.MessageEntity.self)
|
||||||
|
} }
|
||||||
|
var _4: Api.ReplyMarkup?
|
||||||
|
if Int(_1!) & Int(1 << 2) != 0 {if let signature = reader.readInt32() {
|
||||||
|
_4 = Api.parse(reader, signature: signature) as? Api.ReplyMarkup
|
||||||
|
} }
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = (Int(_1!) & Int(1 << 1) == 0) || _3 != nil
|
||||||
|
let _c4 = (Int(_1!) & Int(1 << 2) == 0) || _4 != nil
|
||||||
|
if _c1 && _c2 && _c3 && _c4 {
|
||||||
|
return Api.InputBotInlineMessage.inputBotInlineMessageText(flags: _1!, message: _2!, entities: _3, replyMarkup: _4)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
public extension Api {
|
public extension Api {
|
||||||
enum InputBotInlineMessageID: TypeConstructorDescription {
|
enum InputBotInlineMessageID: TypeConstructorDescription {
|
||||||
case inputBotInlineMessageID(dcId: Int32, id: Int64, accessHash: Int64)
|
case inputBotInlineMessageID(dcId: Int32, id: Int64, accessHash: Int64)
|
||||||
@ -928,317 +1292,3 @@ public extension Api {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public extension Api {
|
|
||||||
enum InputContact: TypeConstructorDescription {
|
|
||||||
case inputPhoneContact(clientId: Int64, phone: String, firstName: String, lastName: String)
|
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
||||||
switch self {
|
|
||||||
case .inputPhoneContact(let clientId, let phone, let firstName, let lastName):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(-208488460)
|
|
||||||
}
|
|
||||||
serializeInt64(clientId, buffer: buffer, boxed: false)
|
|
||||||
serializeString(phone, buffer: buffer, boxed: false)
|
|
||||||
serializeString(firstName, buffer: buffer, boxed: false)
|
|
||||||
serializeString(lastName, buffer: buffer, boxed: false)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public func descriptionFields() -> (String, [(String, Any)]) {
|
|
||||||
switch self {
|
|
||||||
case .inputPhoneContact(let clientId, let phone, let firstName, let lastName):
|
|
||||||
return ("inputPhoneContact", [("clientId", clientId as Any), ("phone", phone as Any), ("firstName", firstName as Any), ("lastName", lastName as Any)])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static func parse_inputPhoneContact(_ reader: BufferReader) -> InputContact? {
|
|
||||||
var _1: Int64?
|
|
||||||
_1 = reader.readInt64()
|
|
||||||
var _2: String?
|
|
||||||
_2 = parseString(reader)
|
|
||||||
var _3: String?
|
|
||||||
_3 = parseString(reader)
|
|
||||||
var _4: String?
|
|
||||||
_4 = parseString(reader)
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = _2 != nil
|
|
||||||
let _c3 = _3 != nil
|
|
||||||
let _c4 = _4 != nil
|
|
||||||
if _c1 && _c2 && _c3 && _c4 {
|
|
||||||
return Api.InputContact.inputPhoneContact(clientId: _1!, phone: _2!, firstName: _3!, lastName: _4!)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public extension Api {
|
|
||||||
indirect enum InputDialogPeer: TypeConstructorDescription {
|
|
||||||
case inputDialogPeer(peer: Api.InputPeer)
|
|
||||||
case inputDialogPeerFolder(folderId: Int32)
|
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
||||||
switch self {
|
|
||||||
case .inputDialogPeer(let peer):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(-55902537)
|
|
||||||
}
|
|
||||||
peer.serialize(buffer, true)
|
|
||||||
break
|
|
||||||
case .inputDialogPeerFolder(let folderId):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(1684014375)
|
|
||||||
}
|
|
||||||
serializeInt32(folderId, buffer: buffer, boxed: false)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public func descriptionFields() -> (String, [(String, Any)]) {
|
|
||||||
switch self {
|
|
||||||
case .inputDialogPeer(let peer):
|
|
||||||
return ("inputDialogPeer", [("peer", peer as Any)])
|
|
||||||
case .inputDialogPeerFolder(let folderId):
|
|
||||||
return ("inputDialogPeerFolder", [("folderId", folderId as Any)])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static func parse_inputDialogPeer(_ reader: BufferReader) -> InputDialogPeer? {
|
|
||||||
var _1: Api.InputPeer?
|
|
||||||
if let signature = reader.readInt32() {
|
|
||||||
_1 = Api.parse(reader, signature: signature) as? Api.InputPeer
|
|
||||||
}
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
if _c1 {
|
|
||||||
return Api.InputDialogPeer.inputDialogPeer(peer: _1!)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static func parse_inputDialogPeerFolder(_ reader: BufferReader) -> InputDialogPeer? {
|
|
||||||
var _1: Int32?
|
|
||||||
_1 = reader.readInt32()
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
if _c1 {
|
|
||||||
return Api.InputDialogPeer.inputDialogPeerFolder(folderId: _1!)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public extension Api {
|
|
||||||
enum InputDocument: TypeConstructorDescription {
|
|
||||||
case inputDocument(id: Int64, accessHash: Int64, fileReference: Buffer)
|
|
||||||
case inputDocumentEmpty
|
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
||||||
switch self {
|
|
||||||
case .inputDocument(let id, let accessHash, let fileReference):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(448771445)
|
|
||||||
}
|
|
||||||
serializeInt64(id, buffer: buffer, boxed: false)
|
|
||||||
serializeInt64(accessHash, buffer: buffer, boxed: false)
|
|
||||||
serializeBytes(fileReference, buffer: buffer, boxed: false)
|
|
||||||
break
|
|
||||||
case .inputDocumentEmpty:
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(1928391342)
|
|
||||||
}
|
|
||||||
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public func descriptionFields() -> (String, [(String, Any)]) {
|
|
||||||
switch self {
|
|
||||||
case .inputDocument(let id, let accessHash, let fileReference):
|
|
||||||
return ("inputDocument", [("id", id as Any), ("accessHash", accessHash as Any), ("fileReference", fileReference as Any)])
|
|
||||||
case .inputDocumentEmpty:
|
|
||||||
return ("inputDocumentEmpty", [])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static func parse_inputDocument(_ reader: BufferReader) -> InputDocument? {
|
|
||||||
var _1: Int64?
|
|
||||||
_1 = reader.readInt64()
|
|
||||||
var _2: Int64?
|
|
||||||
_2 = reader.readInt64()
|
|
||||||
var _3: Buffer?
|
|
||||||
_3 = parseBytes(reader)
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = _2 != nil
|
|
||||||
let _c3 = _3 != nil
|
|
||||||
if _c1 && _c2 && _c3 {
|
|
||||||
return Api.InputDocument.inputDocument(id: _1!, accessHash: _2!, fileReference: _3!)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static func parse_inputDocumentEmpty(_ reader: BufferReader) -> InputDocument? {
|
|
||||||
return Api.InputDocument.inputDocumentEmpty
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public extension Api {
|
|
||||||
enum InputEncryptedChat: TypeConstructorDescription {
|
|
||||||
case inputEncryptedChat(chatId: Int32, accessHash: Int64)
|
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
||||||
switch self {
|
|
||||||
case .inputEncryptedChat(let chatId, let accessHash):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(-247351839)
|
|
||||||
}
|
|
||||||
serializeInt32(chatId, buffer: buffer, boxed: false)
|
|
||||||
serializeInt64(accessHash, buffer: buffer, boxed: false)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public func descriptionFields() -> (String, [(String, Any)]) {
|
|
||||||
switch self {
|
|
||||||
case .inputEncryptedChat(let chatId, let accessHash):
|
|
||||||
return ("inputEncryptedChat", [("chatId", chatId as Any), ("accessHash", accessHash as Any)])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static func parse_inputEncryptedChat(_ reader: BufferReader) -> InputEncryptedChat? {
|
|
||||||
var _1: Int32?
|
|
||||||
_1 = reader.readInt32()
|
|
||||||
var _2: Int64?
|
|
||||||
_2 = reader.readInt64()
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = _2 != nil
|
|
||||||
if _c1 && _c2 {
|
|
||||||
return Api.InputEncryptedChat.inputEncryptedChat(chatId: _1!, accessHash: _2!)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public extension Api {
|
|
||||||
enum InputEncryptedFile: TypeConstructorDescription {
|
|
||||||
case inputEncryptedFile(id: Int64, accessHash: Int64)
|
|
||||||
case inputEncryptedFileBigUploaded(id: Int64, parts: Int32, keyFingerprint: Int32)
|
|
||||||
case inputEncryptedFileEmpty
|
|
||||||
case inputEncryptedFileUploaded(id: Int64, parts: Int32, md5Checksum: String, keyFingerprint: Int32)
|
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
||||||
switch self {
|
|
||||||
case .inputEncryptedFile(let id, let accessHash):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(1511503333)
|
|
||||||
}
|
|
||||||
serializeInt64(id, buffer: buffer, boxed: false)
|
|
||||||
serializeInt64(accessHash, buffer: buffer, boxed: false)
|
|
||||||
break
|
|
||||||
case .inputEncryptedFileBigUploaded(let id, let parts, let keyFingerprint):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(767652808)
|
|
||||||
}
|
|
||||||
serializeInt64(id, buffer: buffer, boxed: false)
|
|
||||||
serializeInt32(parts, buffer: buffer, boxed: false)
|
|
||||||
serializeInt32(keyFingerprint, buffer: buffer, boxed: false)
|
|
||||||
break
|
|
||||||
case .inputEncryptedFileEmpty:
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(406307684)
|
|
||||||
}
|
|
||||||
|
|
||||||
break
|
|
||||||
case .inputEncryptedFileUploaded(let id, let parts, let md5Checksum, let keyFingerprint):
|
|
||||||
if boxed {
|
|
||||||
buffer.appendInt32(1690108678)
|
|
||||||
}
|
|
||||||
serializeInt64(id, buffer: buffer, boxed: false)
|
|
||||||
serializeInt32(parts, buffer: buffer, boxed: false)
|
|
||||||
serializeString(md5Checksum, buffer: buffer, boxed: false)
|
|
||||||
serializeInt32(keyFingerprint, buffer: buffer, boxed: false)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public func descriptionFields() -> (String, [(String, Any)]) {
|
|
||||||
switch self {
|
|
||||||
case .inputEncryptedFile(let id, let accessHash):
|
|
||||||
return ("inputEncryptedFile", [("id", id as Any), ("accessHash", accessHash as Any)])
|
|
||||||
case .inputEncryptedFileBigUploaded(let id, let parts, let keyFingerprint):
|
|
||||||
return ("inputEncryptedFileBigUploaded", [("id", id as Any), ("parts", parts as Any), ("keyFingerprint", keyFingerprint as Any)])
|
|
||||||
case .inputEncryptedFileEmpty:
|
|
||||||
return ("inputEncryptedFileEmpty", [])
|
|
||||||
case .inputEncryptedFileUploaded(let id, let parts, let md5Checksum, let keyFingerprint):
|
|
||||||
return ("inputEncryptedFileUploaded", [("id", id as Any), ("parts", parts as Any), ("md5Checksum", md5Checksum as Any), ("keyFingerprint", keyFingerprint as Any)])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static func parse_inputEncryptedFile(_ reader: BufferReader) -> InputEncryptedFile? {
|
|
||||||
var _1: Int64?
|
|
||||||
_1 = reader.readInt64()
|
|
||||||
var _2: Int64?
|
|
||||||
_2 = reader.readInt64()
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = _2 != nil
|
|
||||||
if _c1 && _c2 {
|
|
||||||
return Api.InputEncryptedFile.inputEncryptedFile(id: _1!, accessHash: _2!)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static func parse_inputEncryptedFileBigUploaded(_ reader: BufferReader) -> InputEncryptedFile? {
|
|
||||||
var _1: Int64?
|
|
||||||
_1 = reader.readInt64()
|
|
||||||
var _2: Int32?
|
|
||||||
_2 = reader.readInt32()
|
|
||||||
var _3: Int32?
|
|
||||||
_3 = reader.readInt32()
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = _2 != nil
|
|
||||||
let _c3 = _3 != nil
|
|
||||||
if _c1 && _c2 && _c3 {
|
|
||||||
return Api.InputEncryptedFile.inputEncryptedFileBigUploaded(id: _1!, parts: _2!, keyFingerprint: _3!)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static func parse_inputEncryptedFileEmpty(_ reader: BufferReader) -> InputEncryptedFile? {
|
|
||||||
return Api.InputEncryptedFile.inputEncryptedFileEmpty
|
|
||||||
}
|
|
||||||
public static func parse_inputEncryptedFileUploaded(_ reader: BufferReader) -> InputEncryptedFile? {
|
|
||||||
var _1: Int64?
|
|
||||||
_1 = reader.readInt64()
|
|
||||||
var _2: Int32?
|
|
||||||
_2 = reader.readInt32()
|
|
||||||
var _3: String?
|
|
||||||
_3 = parseString(reader)
|
|
||||||
var _4: Int32?
|
|
||||||
_4 = reader.readInt32()
|
|
||||||
let _c1 = _1 != nil
|
|
||||||
let _c2 = _2 != nil
|
|
||||||
let _c3 = _3 != nil
|
|
||||||
let _c4 = _4 != nil
|
|
||||||
if _c1 && _c2 && _c3 && _c4 {
|
|
||||||
return Api.InputEncryptedFile.inputEncryptedFileUploaded(id: _1!, parts: _2!, md5Checksum: _3!, keyFingerprint: _4!)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -1,3 +1,317 @@
|
|||||||
|
public extension Api {
|
||||||
|
enum InputContact: TypeConstructorDescription {
|
||||||
|
case inputPhoneContact(clientId: Int64, phone: String, firstName: String, lastName: String)
|
||||||
|
|
||||||
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
|
switch self {
|
||||||
|
case .inputPhoneContact(let clientId, let phone, let firstName, let lastName):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(-208488460)
|
||||||
|
}
|
||||||
|
serializeInt64(clientId, buffer: buffer, boxed: false)
|
||||||
|
serializeString(phone, buffer: buffer, boxed: false)
|
||||||
|
serializeString(firstName, buffer: buffer, boxed: false)
|
||||||
|
serializeString(lastName, buffer: buffer, boxed: false)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
|
switch self {
|
||||||
|
case .inputPhoneContact(let clientId, let phone, let firstName, let lastName):
|
||||||
|
return ("inputPhoneContact", [("clientId", clientId as Any), ("phone", phone as Any), ("firstName", firstName as Any), ("lastName", lastName as Any)])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func parse_inputPhoneContact(_ reader: BufferReader) -> InputContact? {
|
||||||
|
var _1: Int64?
|
||||||
|
_1 = reader.readInt64()
|
||||||
|
var _2: String?
|
||||||
|
_2 = parseString(reader)
|
||||||
|
var _3: String?
|
||||||
|
_3 = parseString(reader)
|
||||||
|
var _4: String?
|
||||||
|
_4 = parseString(reader)
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = _3 != nil
|
||||||
|
let _c4 = _4 != nil
|
||||||
|
if _c1 && _c2 && _c3 && _c4 {
|
||||||
|
return Api.InputContact.inputPhoneContact(clientId: _1!, phone: _2!, firstName: _3!, lastName: _4!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public extension Api {
|
||||||
|
indirect enum InputDialogPeer: TypeConstructorDescription {
|
||||||
|
case inputDialogPeer(peer: Api.InputPeer)
|
||||||
|
case inputDialogPeerFolder(folderId: Int32)
|
||||||
|
|
||||||
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
|
switch self {
|
||||||
|
case .inputDialogPeer(let peer):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(-55902537)
|
||||||
|
}
|
||||||
|
peer.serialize(buffer, true)
|
||||||
|
break
|
||||||
|
case .inputDialogPeerFolder(let folderId):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(1684014375)
|
||||||
|
}
|
||||||
|
serializeInt32(folderId, buffer: buffer, boxed: false)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
|
switch self {
|
||||||
|
case .inputDialogPeer(let peer):
|
||||||
|
return ("inputDialogPeer", [("peer", peer as Any)])
|
||||||
|
case .inputDialogPeerFolder(let folderId):
|
||||||
|
return ("inputDialogPeerFolder", [("folderId", folderId as Any)])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func parse_inputDialogPeer(_ reader: BufferReader) -> InputDialogPeer? {
|
||||||
|
var _1: Api.InputPeer?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
_1 = Api.parse(reader, signature: signature) as? Api.InputPeer
|
||||||
|
}
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
if _c1 {
|
||||||
|
return Api.InputDialogPeer.inputDialogPeer(peer: _1!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static func parse_inputDialogPeerFolder(_ reader: BufferReader) -> InputDialogPeer? {
|
||||||
|
var _1: Int32?
|
||||||
|
_1 = reader.readInt32()
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
if _c1 {
|
||||||
|
return Api.InputDialogPeer.inputDialogPeerFolder(folderId: _1!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public extension Api {
|
||||||
|
enum InputDocument: TypeConstructorDescription {
|
||||||
|
case inputDocument(id: Int64, accessHash: Int64, fileReference: Buffer)
|
||||||
|
case inputDocumentEmpty
|
||||||
|
|
||||||
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
|
switch self {
|
||||||
|
case .inputDocument(let id, let accessHash, let fileReference):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(448771445)
|
||||||
|
}
|
||||||
|
serializeInt64(id, buffer: buffer, boxed: false)
|
||||||
|
serializeInt64(accessHash, buffer: buffer, boxed: false)
|
||||||
|
serializeBytes(fileReference, buffer: buffer, boxed: false)
|
||||||
|
break
|
||||||
|
case .inputDocumentEmpty:
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(1928391342)
|
||||||
|
}
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
|
switch self {
|
||||||
|
case .inputDocument(let id, let accessHash, let fileReference):
|
||||||
|
return ("inputDocument", [("id", id as Any), ("accessHash", accessHash as Any), ("fileReference", fileReference as Any)])
|
||||||
|
case .inputDocumentEmpty:
|
||||||
|
return ("inputDocumentEmpty", [])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func parse_inputDocument(_ reader: BufferReader) -> InputDocument? {
|
||||||
|
var _1: Int64?
|
||||||
|
_1 = reader.readInt64()
|
||||||
|
var _2: Int64?
|
||||||
|
_2 = reader.readInt64()
|
||||||
|
var _3: Buffer?
|
||||||
|
_3 = parseBytes(reader)
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = _3 != nil
|
||||||
|
if _c1 && _c2 && _c3 {
|
||||||
|
return Api.InputDocument.inputDocument(id: _1!, accessHash: _2!, fileReference: _3!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static func parse_inputDocumentEmpty(_ reader: BufferReader) -> InputDocument? {
|
||||||
|
return Api.InputDocument.inputDocumentEmpty
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public extension Api {
|
||||||
|
enum InputEncryptedChat: TypeConstructorDescription {
|
||||||
|
case inputEncryptedChat(chatId: Int32, accessHash: Int64)
|
||||||
|
|
||||||
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
|
switch self {
|
||||||
|
case .inputEncryptedChat(let chatId, let accessHash):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(-247351839)
|
||||||
|
}
|
||||||
|
serializeInt32(chatId, buffer: buffer, boxed: false)
|
||||||
|
serializeInt64(accessHash, buffer: buffer, boxed: false)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
|
switch self {
|
||||||
|
case .inputEncryptedChat(let chatId, let accessHash):
|
||||||
|
return ("inputEncryptedChat", [("chatId", chatId as Any), ("accessHash", accessHash as Any)])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func parse_inputEncryptedChat(_ reader: BufferReader) -> InputEncryptedChat? {
|
||||||
|
var _1: Int32?
|
||||||
|
_1 = reader.readInt32()
|
||||||
|
var _2: Int64?
|
||||||
|
_2 = reader.readInt64()
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
if _c1 && _c2 {
|
||||||
|
return Api.InputEncryptedChat.inputEncryptedChat(chatId: _1!, accessHash: _2!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public extension Api {
|
||||||
|
enum InputEncryptedFile: TypeConstructorDescription {
|
||||||
|
case inputEncryptedFile(id: Int64, accessHash: Int64)
|
||||||
|
case inputEncryptedFileBigUploaded(id: Int64, parts: Int32, keyFingerprint: Int32)
|
||||||
|
case inputEncryptedFileEmpty
|
||||||
|
case inputEncryptedFileUploaded(id: Int64, parts: Int32, md5Checksum: String, keyFingerprint: Int32)
|
||||||
|
|
||||||
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
|
switch self {
|
||||||
|
case .inputEncryptedFile(let id, let accessHash):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(1511503333)
|
||||||
|
}
|
||||||
|
serializeInt64(id, buffer: buffer, boxed: false)
|
||||||
|
serializeInt64(accessHash, buffer: buffer, boxed: false)
|
||||||
|
break
|
||||||
|
case .inputEncryptedFileBigUploaded(let id, let parts, let keyFingerprint):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(767652808)
|
||||||
|
}
|
||||||
|
serializeInt64(id, buffer: buffer, boxed: false)
|
||||||
|
serializeInt32(parts, buffer: buffer, boxed: false)
|
||||||
|
serializeInt32(keyFingerprint, buffer: buffer, boxed: false)
|
||||||
|
break
|
||||||
|
case .inputEncryptedFileEmpty:
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(406307684)
|
||||||
|
}
|
||||||
|
|
||||||
|
break
|
||||||
|
case .inputEncryptedFileUploaded(let id, let parts, let md5Checksum, let keyFingerprint):
|
||||||
|
if boxed {
|
||||||
|
buffer.appendInt32(1690108678)
|
||||||
|
}
|
||||||
|
serializeInt64(id, buffer: buffer, boxed: false)
|
||||||
|
serializeInt32(parts, buffer: buffer, boxed: false)
|
||||||
|
serializeString(md5Checksum, buffer: buffer, boxed: false)
|
||||||
|
serializeInt32(keyFingerprint, buffer: buffer, boxed: false)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
|
switch self {
|
||||||
|
case .inputEncryptedFile(let id, let accessHash):
|
||||||
|
return ("inputEncryptedFile", [("id", id as Any), ("accessHash", accessHash as Any)])
|
||||||
|
case .inputEncryptedFileBigUploaded(let id, let parts, let keyFingerprint):
|
||||||
|
return ("inputEncryptedFileBigUploaded", [("id", id as Any), ("parts", parts as Any), ("keyFingerprint", keyFingerprint as Any)])
|
||||||
|
case .inputEncryptedFileEmpty:
|
||||||
|
return ("inputEncryptedFileEmpty", [])
|
||||||
|
case .inputEncryptedFileUploaded(let id, let parts, let md5Checksum, let keyFingerprint):
|
||||||
|
return ("inputEncryptedFileUploaded", [("id", id as Any), ("parts", parts as Any), ("md5Checksum", md5Checksum as Any), ("keyFingerprint", keyFingerprint as Any)])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func parse_inputEncryptedFile(_ reader: BufferReader) -> InputEncryptedFile? {
|
||||||
|
var _1: Int64?
|
||||||
|
_1 = reader.readInt64()
|
||||||
|
var _2: Int64?
|
||||||
|
_2 = reader.readInt64()
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
if _c1 && _c2 {
|
||||||
|
return Api.InputEncryptedFile.inputEncryptedFile(id: _1!, accessHash: _2!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static func parse_inputEncryptedFileBigUploaded(_ reader: BufferReader) -> InputEncryptedFile? {
|
||||||
|
var _1: Int64?
|
||||||
|
_1 = reader.readInt64()
|
||||||
|
var _2: Int32?
|
||||||
|
_2 = reader.readInt32()
|
||||||
|
var _3: Int32?
|
||||||
|
_3 = reader.readInt32()
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = _3 != nil
|
||||||
|
if _c1 && _c2 && _c3 {
|
||||||
|
return Api.InputEncryptedFile.inputEncryptedFileBigUploaded(id: _1!, parts: _2!, keyFingerprint: _3!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static func parse_inputEncryptedFileEmpty(_ reader: BufferReader) -> InputEncryptedFile? {
|
||||||
|
return Api.InputEncryptedFile.inputEncryptedFileEmpty
|
||||||
|
}
|
||||||
|
public static func parse_inputEncryptedFileUploaded(_ reader: BufferReader) -> InputEncryptedFile? {
|
||||||
|
var _1: Int64?
|
||||||
|
_1 = reader.readInt64()
|
||||||
|
var _2: Int32?
|
||||||
|
_2 = reader.readInt32()
|
||||||
|
var _3: String?
|
||||||
|
_3 = parseString(reader)
|
||||||
|
var _4: Int32?
|
||||||
|
_4 = reader.readInt32()
|
||||||
|
let _c1 = _1 != nil
|
||||||
|
let _c2 = _2 != nil
|
||||||
|
let _c3 = _3 != nil
|
||||||
|
let _c4 = _4 != nil
|
||||||
|
if _c1 && _c2 && _c3 && _c4 {
|
||||||
|
return Api.InputEncryptedFile.inputEncryptedFileUploaded(id: _1!, parts: _2!, md5Checksum: _3!, keyFingerprint: _4!)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
public extension Api {
|
public extension Api {
|
||||||
enum InputFile: TypeConstructorDescription {
|
enum InputFile: TypeConstructorDescription {
|
||||||
case inputFile(id: Int64, parts: Int32, name: String, md5Checksum: String)
|
case inputFile(id: Int64, parts: Int32, name: String, md5Checksum: String)
|
||||||
|
@ -269,6 +269,7 @@ public func sendAuthorizationCode(accountManager: AccountManager<TelegramAccount
|
|||||||
case let .sentCode(sentCode):
|
case let .sentCode(sentCode):
|
||||||
switch sentCode {
|
switch sentCode {
|
||||||
case let .sentCode(_, type, phoneCodeHash, nextType, codeTimeout):
|
case let .sentCode(_, type, phoneCodeHash, nextType, codeTimeout):
|
||||||
|
let parsedType = SentAuthorizationCodeType(apiType: type)
|
||||||
var parsedNextType: AuthorizationCodeNextType?
|
var parsedNextType: AuthorizationCodeNextType?
|
||||||
if let nextType = nextType {
|
if let nextType = nextType {
|
||||||
parsedNextType = AuthorizationCodeNextType(apiType: nextType)
|
parsedNextType = AuthorizationCodeNextType(apiType: nextType)
|
||||||
@ -316,11 +317,16 @@ public func sendAuthorizationCode(accountManager: AccountManager<TelegramAccount
|
|||||||
case .word, .phrase:
|
case .word, .phrase:
|
||||||
previousCodeEntry = state.contents
|
previousCodeEntry = state.contents
|
||||||
default:
|
default:
|
||||||
break
|
switch parsedType {
|
||||||
|
case .word, .phrase:
|
||||||
|
previousCodeEntry = state.contents
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
transaction.setState(UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .confirmationCodeEntry(number: phoneNumber, type: SentAuthorizationCodeType(apiType: type), hash: phoneCodeHash, timeout: codeTimeout, nextType: parsedNextType, syncContacts: syncContacts, previousCodeEntry: previousCodeEntry, usePrevious: false)))
|
transaction.setState(UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .confirmationCodeEntry(number: phoneNumber, type: parsedType, hash: phoneCodeHash, timeout: codeTimeout, nextType: parsedNextType, syncContacts: syncContacts, previousCodeEntry: previousCodeEntry, usePrevious: false)))
|
||||||
|
|
||||||
return .sentCode(account)
|
return .sentCode(account)
|
||||||
}
|
}
|
||||||
@ -341,11 +347,16 @@ public func sendAuthorizationCode(accountManager: AccountManager<TelegramAccount
|
|||||||
case .word, .phrase:
|
case .word, .phrase:
|
||||||
previousCodeEntry = state.contents
|
previousCodeEntry = state.contents
|
||||||
default:
|
default:
|
||||||
break
|
switch parsedType {
|
||||||
|
case .word, .phrase:
|
||||||
|
previousCodeEntry = state.contents
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
transaction.setState(UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .confirmationCodeEntry(number: phoneNumber, type: SentAuthorizationCodeType(apiType: type), hash: phoneCodeHash, timeout: codeTimeout, nextType: parsedNextType, syncContacts: syncContacts, previousCodeEntry: previousCodeEntry, usePrevious: false)))
|
transaction.setState(UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .confirmationCodeEntry(number: phoneNumber, type: parsedType, hash: phoneCodeHash, timeout: codeTimeout, nextType: parsedNextType, syncContacts: syncContacts, previousCodeEntry: previousCodeEntry, usePrevious: false)))
|
||||||
case let .sentCodeSuccess(authorization):
|
case let .sentCodeSuccess(authorization):
|
||||||
switch authorization {
|
switch authorization {
|
||||||
case let .authorization(_, otherwiseReloginDays, _, futureAuthToken, user):
|
case let .authorization(_, otherwiseReloginDays, _, futureAuthToken, user):
|
||||||
@ -404,6 +415,7 @@ private func internalResendAuthorizationCode(accountManager: AccountManager<Tele
|
|||||||
return account.postbox.transaction { transaction -> Signal<SendAuthorizationCodeResult, AuthorizationCodeRequestError> in
|
return account.postbox.transaction { transaction -> Signal<SendAuthorizationCodeResult, AuthorizationCodeRequestError> in
|
||||||
switch sentCode {
|
switch sentCode {
|
||||||
case let .sentCode(_, type, phoneCodeHash, nextType, codeTimeout):
|
case let .sentCode(_, type, phoneCodeHash, nextType, codeTimeout):
|
||||||
|
let parsedType = SentAuthorizationCodeType(apiType: type)
|
||||||
var parsedNextType: AuthorizationCodeNextType?
|
var parsedNextType: AuthorizationCodeNextType?
|
||||||
if let nextType = nextType {
|
if let nextType = nextType {
|
||||||
parsedNextType = AuthorizationCodeNextType(apiType: nextType)
|
parsedNextType = AuthorizationCodeNextType(apiType: nextType)
|
||||||
@ -451,11 +463,16 @@ private func internalResendAuthorizationCode(accountManager: AccountManager<Tele
|
|||||||
case .word, .phrase:
|
case .word, .phrase:
|
||||||
previousCodeEntry = state.contents
|
previousCodeEntry = state.contents
|
||||||
default:
|
default:
|
||||||
break
|
switch parsedType {
|
||||||
|
case .word, .phrase:
|
||||||
|
previousCodeEntry = state.contents
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
transaction.setState(UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .confirmationCodeEntry(number: number, type: SentAuthorizationCodeType(apiType: type), hash: phoneCodeHash, timeout: codeTimeout, nextType: parsedNextType, syncContacts: syncContacts, previousCodeEntry: previousCodeEntry, usePrevious: false)))
|
transaction.setState(UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .confirmationCodeEntry(number: number, type: parsedType, hash: phoneCodeHash, timeout: codeTimeout, nextType: parsedNextType, syncContacts: syncContacts, previousCodeEntry: previousCodeEntry, usePrevious: false)))
|
||||||
|
|
||||||
return .sentCode(account)
|
return .sentCode(account)
|
||||||
}
|
}
|
||||||
@ -476,7 +493,12 @@ private func internalResendAuthorizationCode(accountManager: AccountManager<Tele
|
|||||||
case .word, .phrase:
|
case .word, .phrase:
|
||||||
previousCodeEntry = state.contents
|
previousCodeEntry = state.contents
|
||||||
default:
|
default:
|
||||||
break
|
switch parsedType {
|
||||||
|
case .word, .phrase:
|
||||||
|
previousCodeEntry = state.contents
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -498,17 +520,6 @@ public func resendAuthorizationCode(accountManager: AccountManager<TelegramAccou
|
|||||||
switch state.contents {
|
switch state.contents {
|
||||||
case let .confirmationCodeEntry(number, type, hash, _, nextType, syncContacts, previousCodeEntryValue, _):
|
case let .confirmationCodeEntry(number, type, hash, _, nextType, syncContacts, previousCodeEntryValue, _):
|
||||||
if nextType != nil {
|
if nextType != nil {
|
||||||
var previousCodeEntry: UnauthorizedAccountStateContents?
|
|
||||||
if let previousCodeEntryValue {
|
|
||||||
previousCodeEntry = previousCodeEntryValue
|
|
||||||
} else {
|
|
||||||
switch type {
|
|
||||||
case .word, .phrase:
|
|
||||||
previousCodeEntry = state.contents
|
|
||||||
default:
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return account.network.request(Api.functions.auth.resendCode(phoneNumber: number, phoneCodeHash: hash), automaticFloodWait: false)
|
return account.network.request(Api.functions.auth.resendCode(phoneNumber: number, phoneCodeHash: hash), automaticFloodWait: false)
|
||||||
|> mapError { error -> AuthorizationCodeRequestError in
|
|> mapError { error -> AuthorizationCodeRequestError in
|
||||||
if error.errorDescription.hasPrefix("FLOOD_WAIT") {
|
if error.errorDescription.hasPrefix("FLOOD_WAIT") {
|
||||||
@ -528,13 +539,31 @@ public func resendAuthorizationCode(accountManager: AccountManager<TelegramAccou
|
|||||||
|> mapToSignal { sentCode -> Signal<Void, AuthorizationCodeRequestError> in
|
|> mapToSignal { sentCode -> Signal<Void, AuthorizationCodeRequestError> in
|
||||||
return account.postbox.transaction { transaction -> Signal<Void, AuthorizationCodeRequestError> in
|
return account.postbox.transaction { transaction -> Signal<Void, AuthorizationCodeRequestError> in
|
||||||
switch sentCode {
|
switch sentCode {
|
||||||
case let .sentCode(_, type, phoneCodeHash, nextType, codeTimeout):
|
case let .sentCode(_, newType, phoneCodeHash, nextType, codeTimeout):
|
||||||
|
let parsedType = SentAuthorizationCodeType(apiType: newType)
|
||||||
|
var previousCodeEntry: UnauthorizedAccountStateContents?
|
||||||
|
if let previousCodeEntryValue {
|
||||||
|
previousCodeEntry = previousCodeEntryValue
|
||||||
|
} else {
|
||||||
|
switch type {
|
||||||
|
case .word, .phrase:
|
||||||
|
previousCodeEntry = state.contents
|
||||||
|
default:
|
||||||
|
switch parsedType {
|
||||||
|
case .word, .phrase:
|
||||||
|
previousCodeEntry = state.contents
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var parsedNextType: AuthorizationCodeNextType?
|
var parsedNextType: AuthorizationCodeNextType?
|
||||||
if let nextType = nextType {
|
if let nextType = nextType {
|
||||||
parsedNextType = AuthorizationCodeNextType(apiType: nextType)
|
parsedNextType = AuthorizationCodeNextType(apiType: nextType)
|
||||||
}
|
}
|
||||||
|
|
||||||
if case let .sentCodeTypeFirebaseSms(_, _, receipt, pushTimeout, _) = type {
|
if case let .sentCodeTypeFirebaseSms(_, _, receipt, pushTimeout, _) = newType {
|
||||||
return firebaseSecretStream
|
return firebaseSecretStream
|
||||||
|> map { mapping -> String? in
|
|> map { mapping -> String? in
|
||||||
guard let receipt = receipt else {
|
guard let receipt = receipt else {
|
||||||
@ -567,7 +596,7 @@ public func resendAuthorizationCode(accountManager: AccountManager<TelegramAccou
|
|||||||
|> mapToSignal { success -> Signal<SendAuthorizationCodeResult, AuthorizationCodeRequestError> in
|
|> mapToSignal { success -> Signal<SendAuthorizationCodeResult, AuthorizationCodeRequestError> in
|
||||||
if success {
|
if success {
|
||||||
return account.postbox.transaction { transaction -> SendAuthorizationCodeResult in
|
return account.postbox.transaction { transaction -> SendAuthorizationCodeResult in
|
||||||
transaction.setState(UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .confirmationCodeEntry(number: number, type: SentAuthorizationCodeType(apiType: type), hash: phoneCodeHash, timeout: codeTimeout, nextType: parsedNextType, syncContacts: syncContacts, previousCodeEntry: previousCodeEntry, usePrevious: false)))
|
transaction.setState(UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .confirmationCodeEntry(number: number, type: parsedType, hash: phoneCodeHash, timeout: codeTimeout, nextType: parsedNextType, syncContacts: syncContacts, previousCodeEntry: previousCodeEntry, usePrevious: false)))
|
||||||
|
|
||||||
return .sentCode(account)
|
return .sentCode(account)
|
||||||
}
|
}
|
||||||
@ -580,7 +609,7 @@ public func resendAuthorizationCode(accountManager: AccountManager<TelegramAccou
|
|||||||
|> map { _ -> Void in return Void() }
|
|> map { _ -> Void in return Void() }
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction.setState(UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .confirmationCodeEntry(number: number, type: SentAuthorizationCodeType(apiType: type), hash: phoneCodeHash, timeout: codeTimeout, nextType: parsedNextType, syncContacts: syncContacts, previousCodeEntry: previousCodeEntry, usePrevious: false)))
|
transaction.setState(UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .confirmationCodeEntry(number: number, type: parsedType, hash: phoneCodeHash, timeout: codeTimeout, nextType: parsedNextType, syncContacts: syncContacts, previousCodeEntry: previousCodeEntry, usePrevious: false)))
|
||||||
case .sentCodeSuccess:
|
case .sentCodeSuccess:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -1776,6 +1776,9 @@ private func finalStateWithUpdatesAndServerTime(accountPeerId: PeerId, postbox:
|
|||||||
updatedState.updateNewAuthorization(isUnconfirmed: isUnconfirmed, hash: hash, date: date ?? 0, device: device ?? "", location: location ?? "")
|
updatedState.updateNewAuthorization(isUnconfirmed: isUnconfirmed, hash: hash, date: date ?? 0, device: device ?? "", location: location ?? "")
|
||||||
case let .updatePeerWallpaper(_, peer, wallpaper):
|
case let .updatePeerWallpaper(_, peer, wallpaper):
|
||||||
updatedState.updateWallpaper(peerId: peer.peerId, wallpaper: wallpaper.flatMap { TelegramWallpaper(apiWallpaper: $0) })
|
updatedState.updateWallpaper(peerId: peer.peerId, wallpaper: wallpaper.flatMap { TelegramWallpaper(apiWallpaper: $0) })
|
||||||
|
case let .updateBroadcastRevenueTransactions(balances):
|
||||||
|
let _ = balances
|
||||||
|
break
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -145,13 +145,15 @@ func managedSynchronizeEmojiSearchCategories(postbox: Postbox, network: Network,
|
|||||||
case let .emojiGroups(hash, groups):
|
case let .emojiGroups(hash, groups):
|
||||||
let categories = EmojiSearchCategories(
|
let categories = EmojiSearchCategories(
|
||||||
hash: hash,
|
hash: hash,
|
||||||
groups: groups.map { item -> EmojiSearchCategories.Group in
|
groups: groups.compactMap { item -> EmojiSearchCategories.Group? in
|
||||||
switch item {
|
switch item {
|
||||||
case let .emojiGroup(title, iconEmojiId, emoticons):
|
case let .emojiGroup(title, iconEmojiId, emoticons):
|
||||||
return EmojiSearchCategories.Group(
|
return EmojiSearchCategories.Group(
|
||||||
id: iconEmojiId,
|
id: iconEmojiId,
|
||||||
title: title, identifiers: emoticons
|
title: title, identifiers: emoticons
|
||||||
)
|
)
|
||||||
|
case .emojiGroupGreeting, .emojiGroupPremium:
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -5,19 +5,21 @@ import TelegramApi
|
|||||||
import MtProtoKit
|
import MtProtoKit
|
||||||
|
|
||||||
public struct RevenueStats: Equatable {
|
public struct RevenueStats: Equatable {
|
||||||
|
public struct Balances: Equatable {
|
||||||
|
public let currentBalance: Int64
|
||||||
|
public let availableBalance: Int64
|
||||||
|
public let overallRevenue: Int64
|
||||||
|
}
|
||||||
|
|
||||||
public let topHoursGraph: StatsGraph
|
public let topHoursGraph: StatsGraph
|
||||||
public let revenueGraph: StatsGraph
|
public let revenueGraph: StatsGraph
|
||||||
public let currentBalance: Int64
|
public let balances: Balances
|
||||||
public let availableBalance: Int64
|
|
||||||
public let overallRevenue: Int64
|
|
||||||
public let usdRate: Double
|
public let usdRate: Double
|
||||||
|
|
||||||
init(topHoursGraph: StatsGraph, revenueGraph: StatsGraph, currentBalance: Int64, availableBalance: Int64, overallRevenue: Int64, usdRate: Double) {
|
init(topHoursGraph: StatsGraph, revenueGraph: StatsGraph, balances: Balances, usdRate: Double) {
|
||||||
self.topHoursGraph = topHoursGraph
|
self.topHoursGraph = topHoursGraph
|
||||||
self.revenueGraph = revenueGraph
|
self.revenueGraph = revenueGraph
|
||||||
self.currentBalance = currentBalance
|
self.balances = balances
|
||||||
self.availableBalance = availableBalance
|
|
||||||
self.overallRevenue = overallRevenue
|
|
||||||
self.usdRate = usdRate
|
self.usdRate = usdRate
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -28,13 +30,7 @@ public struct RevenueStats: Equatable {
|
|||||||
if lhs.revenueGraph != rhs.revenueGraph {
|
if lhs.revenueGraph != rhs.revenueGraph {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if lhs.currentBalance != rhs.currentBalance {
|
if lhs.balances != rhs.balances {
|
||||||
return false
|
|
||||||
}
|
|
||||||
if lhs.availableBalance != rhs.availableBalance {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if lhs.overallRevenue != rhs.overallRevenue {
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if lhs.usdRate != rhs.usdRate {
|
if lhs.usdRate != rhs.usdRate {
|
||||||
@ -47,8 +43,17 @@ public struct RevenueStats: Equatable {
|
|||||||
extension RevenueStats {
|
extension RevenueStats {
|
||||||
init(apiRevenueStats: Api.stats.BroadcastRevenueStats, peerId: PeerId) {
|
init(apiRevenueStats: Api.stats.BroadcastRevenueStats, peerId: PeerId) {
|
||||||
switch apiRevenueStats {
|
switch apiRevenueStats {
|
||||||
case let .broadcastRevenueStats(topHoursGraph, revenueGraph, currentBalance, availableBalance, overallRevenue, usdRate):
|
case let .broadcastRevenueStats(topHoursGraph, revenueGraph, balances, usdRate):
|
||||||
self.init(topHoursGraph: StatsGraph(apiStatsGraph: topHoursGraph), revenueGraph: StatsGraph(apiStatsGraph: revenueGraph), currentBalance: currentBalance, availableBalance: availableBalance, overallRevenue: overallRevenue, usdRate: usdRate)
|
self.init(topHoursGraph: StatsGraph(apiStatsGraph: topHoursGraph), revenueGraph: StatsGraph(apiStatsGraph: revenueGraph), balances: RevenueStats.Balances(apiRevenueBalances: balances), usdRate: usdRate)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension RevenueStats.Balances {
|
||||||
|
init(apiRevenueBalances: Api.BroadcastRevenueBalances) {
|
||||||
|
switch apiRevenueBalances {
|
||||||
|
case let .broadcastRevenueBalances(currentBalance, availableBalance, overallRevenue):
|
||||||
|
self.init(currentBalance: currentBalance, availableBalance: availableBalance, overallRevenue: overallRevenue)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,16 +31,16 @@ private enum MembersActionType: Hashable, CaseIterable {
|
|||||||
case newMembers
|
case newMembers
|
||||||
case leftMembers
|
case leftMembers
|
||||||
|
|
||||||
func title(strings: PresentationStrings) -> String {
|
func title(isGroup: Bool, strings: PresentationStrings) -> String {
|
||||||
switch self {
|
switch self {
|
||||||
case .newAdminRights:
|
case .newAdminRights:
|
||||||
return "New Admin Rights"
|
return strings.Channel_AdminLogFilter_EventsAdminRights
|
||||||
case .newExceptions:
|
case .newExceptions:
|
||||||
return "New Exceptions"
|
return strings.Channel_AdminLogFilter_EventsExceptions
|
||||||
case .newMembers:
|
case .newMembers:
|
||||||
return "New Members"
|
return isGroup ? strings.Channel_AdminLogFilter_EventsNewMembers : strings.Channel_AdminLogFilter_EventsNewSubscribers
|
||||||
case .leftMembers:
|
case .leftMembers:
|
||||||
return "Members left the Group"
|
return isGroup ? strings.Channel_AdminLogFilter_EventsLeavingGroup : strings.Channel_AdminLogFilter_EventsLeavingChannel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -152,7 +152,7 @@ private enum ActionType: Hashable {
|
|||||||
func title(isGroup: Bool, strings: PresentationStrings) -> String {
|
func title(isGroup: Bool, strings: PresentationStrings) -> String {
|
||||||
switch self {
|
switch self {
|
||||||
case let .members(value):
|
case let .members(value):
|
||||||
return value.title(strings: strings)
|
return value.title(isGroup: isGroup, strings: strings)
|
||||||
case let .settings(value):
|
case let .settings(value):
|
||||||
return value.title(isGroup: isGroup, strings: strings)
|
return value.title(isGroup: isGroup, strings: strings)
|
||||||
case let .messages(value):
|
case let .messages(value):
|
||||||
@ -515,15 +515,15 @@ private final class RecentActionsSettingsSheetComponent: Component {
|
|||||||
case .members:
|
case .members:
|
||||||
totalCount = MembersActionType.allCases.count
|
totalCount = MembersActionType.allCases.count
|
||||||
selectedCount = self.selectedMembersActions.count
|
selectedCount = self.selectedMembersActions.count
|
||||||
title = isGroup ? "Members and Admins" : "Subscribers and Admins"
|
title = isGroup ? environment.strings.Channel_AdminLogFilter_Section_MembersGroup : environment.strings.Channel_AdminLogFilter_Section_MembersChannel
|
||||||
case .settings:
|
case .settings:
|
||||||
totalCount = SettingsActionType.allCases.count
|
totalCount = SettingsActionType.allCases.count
|
||||||
selectedCount = self.selectedSettingsActions.count
|
selectedCount = self.selectedSettingsActions.count
|
||||||
title = isGroup ? "Group Settings" : "Channel Settings"
|
title = isGroup ? environment.strings.Channel_AdminLogFilter_Section_SettingsGroup : environment.strings.Channel_AdminLogFilter_Section_SettingsChannel
|
||||||
case .messages:
|
case .messages:
|
||||||
totalCount = MessagesActionType.allCases.count
|
totalCount = MessagesActionType.allCases.count
|
||||||
selectedCount = self.selectedMessagesActions.count
|
selectedCount = self.selectedMessagesActions.count
|
||||||
title = "Messages"
|
title = environment.strings.Channel_AdminLogFilter_Section_Messages
|
||||||
}
|
}
|
||||||
|
|
||||||
let itemTitle: AnyComponent<Empty> = AnyComponent(HStack([
|
let itemTitle: AnyComponent<Empty> = AnyComponent(HStack([
|
||||||
@ -575,7 +575,7 @@ private final class RecentActionsSettingsSheetComponent: Component {
|
|||||||
theme: environment.theme,
|
theme: environment.theme,
|
||||||
title: itemTitle,
|
title: itemTitle,
|
||||||
leftIcon: .check(ListActionItemComponent.LeftIcon.Check(
|
leftIcon: .check(ListActionItemComponent.LeftIcon.Check(
|
||||||
isSelected: selectedCount != 0,
|
isSelected: selectedCount == totalCount,
|
||||||
toggle: {
|
toggle: {
|
||||||
toggleAction()
|
toggleAction()
|
||||||
}
|
}
|
||||||
@ -684,8 +684,7 @@ private final class RecentActionsSettingsSheetComponent: Component {
|
|||||||
)))
|
)))
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO:localize
|
let titleString: String = environment.strings.Channel_AdminLogFilter_RecentActionsTitle
|
||||||
let titleString: String = "Recent Actions"
|
|
||||||
let titleSize = self.title.update(
|
let titleSize = self.title.update(
|
||||||
transition: .immediate,
|
transition: .immediate,
|
||||||
component: AnyComponent(MultilineTextComponent(
|
component: AnyComponent(MultilineTextComponent(
|
||||||
@ -722,7 +721,7 @@ private final class RecentActionsSettingsSheetComponent: Component {
|
|||||||
theme: environment.theme,
|
theme: environment.theme,
|
||||||
header: AnyComponent(MultilineTextComponent(
|
header: AnyComponent(MultilineTextComponent(
|
||||||
text: .plain(NSAttributedString(
|
text: .plain(NSAttributedString(
|
||||||
string: "FILTER ACTIONS BY TYPE",
|
string: environment.strings.Channel_AdminLogFilter_FilterActionsTypeTitle,
|
||||||
font: Font.regular(presentationData.listsFontSize.itemListBaseHeaderFontSize),
|
font: Font.regular(presentationData.listsFontSize.itemListBaseHeaderFontSize),
|
||||||
textColor: environment.theme.list.freeTextColor
|
textColor: environment.theme.list.freeTextColor
|
||||||
)),
|
)),
|
||||||
@ -790,7 +789,7 @@ private final class RecentActionsSettingsSheetComponent: Component {
|
|||||||
title: AnyComponent(VStack([
|
title: AnyComponent(VStack([
|
||||||
AnyComponentWithIdentity(id: AnyHashable(0), component: AnyComponent(MultilineTextComponent(
|
AnyComponentWithIdentity(id: AnyHashable(0), component: AnyComponent(MultilineTextComponent(
|
||||||
text: .plain(NSAttributedString(
|
text: .plain(NSAttributedString(
|
||||||
string: "Show Actions by All Admins",
|
string: environment.strings.Channel_AdminLogFilter_ShowAllAdminsActions,
|
||||||
font: Font.regular(presentationData.listsFontSize.baseDisplaySize),
|
font: Font.regular(presentationData.listsFontSize.baseDisplaySize),
|
||||||
textColor: environment.theme.list.itemPrimaryTextColor
|
textColor: environment.theme.list.itemPrimaryTextColor
|
||||||
)),
|
)),
|
||||||
@ -798,7 +797,7 @@ private final class RecentActionsSettingsSheetComponent: Component {
|
|||||||
))),
|
))),
|
||||||
], alignment: .left, spacing: 2.0)),
|
], alignment: .left, spacing: 2.0)),
|
||||||
leftIcon: .check(ListActionItemComponent.LeftIcon.Check(
|
leftIcon: .check(ListActionItemComponent.LeftIcon.Check(
|
||||||
isSelected: !self.selectedAdmins.isEmpty,
|
isSelected: self.selectedAdmins.count == component.adminPeers.count,
|
||||||
toggle: {
|
toggle: {
|
||||||
allAdminsToggleAction()
|
allAdminsToggleAction()
|
||||||
}
|
}
|
||||||
@ -821,7 +820,7 @@ private final class RecentActionsSettingsSheetComponent: Component {
|
|||||||
theme: environment.theme,
|
theme: environment.theme,
|
||||||
header: AnyComponent(MultilineTextComponent(
|
header: AnyComponent(MultilineTextComponent(
|
||||||
text: .plain(NSAttributedString(
|
text: .plain(NSAttributedString(
|
||||||
string: "FILTER ACTIONS BY ADMINS",
|
string: environment.strings.Channel_AdminLogFilter_FilterActionsAdminsTitle,
|
||||||
font: Font.regular(presentationData.listsFontSize.itemListBaseHeaderFontSize),
|
font: Font.regular(presentationData.listsFontSize.itemListBaseHeaderFontSize),
|
||||||
textColor: environment.theme.list.freeTextColor
|
textColor: environment.theme.list.freeTextColor
|
||||||
)),
|
)),
|
||||||
@ -856,7 +855,7 @@ private final class RecentActionsSettingsSheetComponent: Component {
|
|||||||
content: AnyComponentWithIdentity(
|
content: AnyComponentWithIdentity(
|
||||||
id: AnyHashable(0),
|
id: AnyHashable(0),
|
||||||
component: AnyComponent(ButtonTextContentComponent(
|
component: AnyComponent(ButtonTextContentComponent(
|
||||||
text: "Apply Filter",
|
text: environment.strings.Channel_AdminLogFilter_ApplyFilter,
|
||||||
badge: 0,
|
badge: 0,
|
||||||
textColor: environment.theme.list.itemCheckColors.foregroundColor,
|
textColor: environment.theme.list.itemCheckColors.foregroundColor,
|
||||||
badgeBackground: environment.theme.list.itemCheckColors.foregroundColor,
|
badgeBackground: environment.theme.list.itemCheckColors.foregroundColor,
|
||||||
|
@ -2244,13 +2244,15 @@ struct ChatRecentActionsEntry: Comparable, Identifiable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private let deletedMessagesDisplayedLimit = 5
|
||||||
|
|
||||||
func chatRecentActionsEntries(entries: [ChannelAdminEventLogEntry], presentationData: ChatPresentationData, expandedDeletedMessages: Set<EngineMessage.Id>) -> [ChatRecentActionsEntry] {
|
func chatRecentActionsEntries(entries: [ChannelAdminEventLogEntry], presentationData: ChatPresentationData, expandedDeletedMessages: Set<EngineMessage.Id>) -> [ChatRecentActionsEntry] {
|
||||||
var result: [ChatRecentActionsEntry] = []
|
var result: [ChatRecentActionsEntry] = []
|
||||||
var deleteMessageEntries: [ChannelAdminEventLogEntry] = []
|
var deleteMessageEntries: [ChannelAdminEventLogEntry] = []
|
||||||
|
|
||||||
func appendCurrentDeleteEntries() {
|
func appendCurrentDeleteEntries() {
|
||||||
if !deleteMessageEntries.isEmpty, let lastEntry = deleteMessageEntries.last, let lastMessageId = lastEntry.event.action.messageId {
|
if !deleteMessageEntries.isEmpty, let lastEntry = deleteMessageEntries.last, let lastMessageId = lastEntry.event.action.messageId {
|
||||||
let isExpandable = deleteMessageEntries.count > 10
|
let isExpandable = deleteMessageEntries.count > deletedMessagesDisplayedLimit
|
||||||
let isExpanded = expandedDeletedMessages.contains(lastMessageId) || !isExpandable
|
let isExpanded = expandedDeletedMessages.contains(lastMessageId) || !isExpandable
|
||||||
let isGroup = deleteMessageEntries.count > 1
|
let isGroup = deleteMessageEntries.count > 1
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user