Update API

This commit is contained in:
Isaac 2024-05-21 15:15:25 +04:00
parent ea1598e4a6
commit cda0334a8b
12 changed files with 228 additions and 190 deletions

View File

@ -52,7 +52,7 @@ public class InvisibleInkDustView: UIView {
private var animColor: CGColor? private var animColor: CGColor?
private let enableAnimations: Bool private let enableAnimations: Bool
private weak var textNode: TextNode? private weak var textNode: ASDisplayNode?
private let textMaskNode: ASDisplayNode private let textMaskNode: ASDisplayNode
private let textSpotNode: ASImageNode private let textSpotNode: ASImageNode
@ -69,7 +69,7 @@ public class InvisibleInkDustView: UIView {
public var isRevealed = false public var isRevealed = false
private var isExploding = false private var isExploding = false
public init(textNode: TextNode?, enableAnimations: Bool) { public init(textNode: ASDisplayNode?, enableAnimations: Bool) {
self.textNode = textNode self.textNode = textNode
self.enableAnimations = enableAnimations self.enableAnimations = enableAnimations
@ -368,7 +368,7 @@ public class InvisibleInkDustNode: ASDisplayNode {
private var animColor: CGColor? private var animColor: CGColor?
private let enableAnimations: Bool private let enableAnimations: Bool
private weak var textNode: TextNode? private weak var textNode: ASDisplayNode?
private let textMaskNode: ASDisplayNode private let textMaskNode: ASDisplayNode
private let textSpotNode: ASImageNode private let textSpotNode: ASImageNode
@ -385,7 +385,7 @@ public class InvisibleInkDustNode: ASDisplayNode {
public var isRevealed = false public var isRevealed = false
private var isExploding = false private var isExploding = false
public init(textNode: TextNode?, enableAnimations: Bool) { public init(textNode: ASDisplayNode?, enableAnimations: Bool) {
self.textNode = textNode self.textNode = textNode
self.enableAnimations = enableAnimations self.enableAnimations = enableAnimations

View File

@ -564,7 +564,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
dict[1205698681] = { return Api.MessageAction.parse_messageActionWebViewDataSentMe($0) } dict[1205698681] = { return Api.MessageAction.parse_messageActionWebViewDataSentMe($0) }
dict[546203849] = { return Api.MessageEntity.parse_inputMessageEntityMentionName($0) } dict[546203849] = { return Api.MessageEntity.parse_inputMessageEntityMentionName($0) }
dict[1981704948] = { return Api.MessageEntity.parse_messageEntityBankCard($0) } dict[1981704948] = { return Api.MessageEntity.parse_messageEntityBankCard($0) }
dict[34469328] = { return Api.MessageEntity.parse_messageEntityBlockquote($0) } dict[-238245204] = { return Api.MessageEntity.parse_messageEntityBlockquote($0) }
dict[-1117713463] = { return Api.MessageEntity.parse_messageEntityBold($0) } dict[-1117713463] = { return Api.MessageEntity.parse_messageEntityBold($0) }
dict[1827637959] = { return Api.MessageEntity.parse_messageEntityBotCommand($0) } dict[1827637959] = { return Api.MessageEntity.parse_messageEntityBotCommand($0) }
dict[1280209983] = { return Api.MessageEntity.parse_messageEntityCashtag($0) } dict[1280209983] = { return Api.MessageEntity.parse_messageEntityCashtag($0) }
@ -875,6 +875,8 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
dict[-1269320843] = { return Api.StarsTransactionPeer.parse_starsTransactionPeerAppStore($0) } dict[-1269320843] = { return Api.StarsTransactionPeer.parse_starsTransactionPeerAppStore($0) }
dict[-382740222] = { return Api.StarsTransactionPeer.parse_starsTransactionPeerFragment($0) } dict[-382740222] = { return Api.StarsTransactionPeer.parse_starsTransactionPeerFragment($0) }
dict[2069236235] = { return Api.StarsTransactionPeer.parse_starsTransactionPeerPlayMarket($0) } dict[2069236235] = { return Api.StarsTransactionPeer.parse_starsTransactionPeerPlayMarket($0) }
dict[621656824] = { return Api.StarsTransactionPeer.parse_starsTransactionPeerPremiumBot($0) }
dict[-1779253276] = { return Api.StarsTransactionPeer.parse_starsTransactionPeerUnsupported($0) }
dict[-884757282] = { return Api.StatsAbsValueAndPrev.parse_statsAbsValueAndPrev($0) } dict[-884757282] = { return Api.StatsAbsValueAndPrev.parse_statsAbsValueAndPrev($0) }
dict[-1237848657] = { return Api.StatsDateRangeDays.parse_statsDateRangeDays($0) } dict[-1237848657] = { return Api.StatsDateRangeDays.parse_statsDateRangeDays($0) }
dict[-1901828938] = { return Api.StatsGraph.parse_statsGraph($0) } dict[-1901828938] = { return Api.StatsGraph.parse_statsGraph($0) }
@ -1377,7 +1379,7 @@ public extension Api {
return parser(reader) return parser(reader)
} }
else { else {
telegramApiLog("Type constructor \(String(signature, radix: 16, uppercase: false)) not found") telegramApiLog("Type constructor \(String(UInt32(bitPattern: signature), radix: 16, uppercase: false)) not found")
return nil return nil
} }
} }

View File

@ -2,7 +2,7 @@ public extension Api {
indirect enum MessageEntity: TypeConstructorDescription { indirect enum MessageEntity: TypeConstructorDescription {
case inputMessageEntityMentionName(offset: Int32, length: Int32, userId: Api.InputUser) case inputMessageEntityMentionName(offset: Int32, length: Int32, userId: Api.InputUser)
case messageEntityBankCard(offset: Int32, length: Int32) case messageEntityBankCard(offset: Int32, length: Int32)
case messageEntityBlockquote(offset: Int32, length: Int32) case messageEntityBlockquote(flags: Int32, offset: Int32, length: Int32)
case messageEntityBold(offset: Int32, length: Int32) case messageEntityBold(offset: Int32, length: Int32)
case messageEntityBotCommand(offset: Int32, length: Int32) case messageEntityBotCommand(offset: Int32, length: Int32)
case messageEntityCashtag(offset: Int32, length: Int32) case messageEntityCashtag(offset: Int32, length: Int32)
@ -39,10 +39,11 @@ public extension Api {
serializeInt32(offset, buffer: buffer, boxed: false) serializeInt32(offset, buffer: buffer, boxed: false)
serializeInt32(length, buffer: buffer, boxed: false) serializeInt32(length, buffer: buffer, boxed: false)
break break
case .messageEntityBlockquote(let offset, let length): case .messageEntityBlockquote(let flags, let offset, let length):
if boxed { if boxed {
buffer.appendInt32(34469328) buffer.appendInt32(-238245204)
} }
serializeInt32(flags, buffer: buffer, boxed: false)
serializeInt32(offset, buffer: buffer, boxed: false) serializeInt32(offset, buffer: buffer, boxed: false)
serializeInt32(length, buffer: buffer, boxed: false) serializeInt32(length, buffer: buffer, boxed: false)
break break
@ -185,8 +186,8 @@ public extension Api {
return ("inputMessageEntityMentionName", [("offset", offset as Any), ("length", length as Any), ("userId", userId as Any)]) return ("inputMessageEntityMentionName", [("offset", offset as Any), ("length", length as Any), ("userId", userId as Any)])
case .messageEntityBankCard(let offset, let length): case .messageEntityBankCard(let offset, let length):
return ("messageEntityBankCard", [("offset", offset as Any), ("length", length as Any)]) return ("messageEntityBankCard", [("offset", offset as Any), ("length", length as Any)])
case .messageEntityBlockquote(let offset, let length): case .messageEntityBlockquote(let flags, let offset, let length):
return ("messageEntityBlockquote", [("offset", offset as Any), ("length", length as Any)]) return ("messageEntityBlockquote", [("flags", flags as Any), ("offset", offset as Any), ("length", length as Any)])
case .messageEntityBold(let offset, let length): case .messageEntityBold(let offset, let length):
return ("messageEntityBold", [("offset", offset as Any), ("length", length as Any)]) return ("messageEntityBold", [("offset", offset as Any), ("length", length as Any)])
case .messageEntityBotCommand(let offset, let length): case .messageEntityBotCommand(let offset, let length):
@ -264,10 +265,13 @@ public extension Api {
_1 = reader.readInt32() _1 = reader.readInt32()
var _2: Int32? var _2: Int32?
_2 = reader.readInt32() _2 = reader.readInt32()
var _3: Int32?
_3 = reader.readInt32()
let _c1 = _1 != nil let _c1 = _1 != nil
let _c2 = _2 != nil let _c2 = _2 != nil
if _c1 && _c2 { let _c3 = _3 != nil
return Api.MessageEntity.messageEntityBlockquote(offset: _1!, length: _2!) if _c1 && _c2 && _c3 {
return Api.MessageEntity.messageEntityBlockquote(flags: _1!, offset: _2!, length: _3!)
} }
else { else {
return nil return nil

View File

@ -710,6 +710,8 @@ public extension Api {
case starsTransactionPeerAppStore case starsTransactionPeerAppStore
case starsTransactionPeerFragment case starsTransactionPeerFragment
case starsTransactionPeerPlayMarket case starsTransactionPeerPlayMarket
case starsTransactionPeerPremiumBot
case starsTransactionPeerUnsupported
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self { switch self {
@ -736,6 +738,18 @@ public extension Api {
buffer.appendInt32(2069236235) buffer.appendInt32(2069236235)
} }
break
case .starsTransactionPeerPremiumBot:
if boxed {
buffer.appendInt32(621656824)
}
break
case .starsTransactionPeerUnsupported:
if boxed {
buffer.appendInt32(-1779253276)
}
break break
} }
} }
@ -750,6 +764,10 @@ public extension Api {
return ("starsTransactionPeerFragment", []) return ("starsTransactionPeerFragment", [])
case .starsTransactionPeerPlayMarket: case .starsTransactionPeerPlayMarket:
return ("starsTransactionPeerPlayMarket", []) return ("starsTransactionPeerPlayMarket", [])
case .starsTransactionPeerPremiumBot:
return ("starsTransactionPeerPremiumBot", [])
case .starsTransactionPeerUnsupported:
return ("starsTransactionPeerUnsupported", [])
} }
} }
@ -775,85 +793,11 @@ public extension Api {
public static func parse_starsTransactionPeerPlayMarket(_ reader: BufferReader) -> StarsTransactionPeer? { public static func parse_starsTransactionPeerPlayMarket(_ reader: BufferReader) -> StarsTransactionPeer? {
return Api.StarsTransactionPeer.starsTransactionPeerPlayMarket return Api.StarsTransactionPeer.starsTransactionPeerPlayMarket
} }
public static func parse_starsTransactionPeerPremiumBot(_ reader: BufferReader) -> StarsTransactionPeer? {
} return Api.StarsTransactionPeer.starsTransactionPeerPremiumBot
}
public extension Api {
enum StatsAbsValueAndPrev: TypeConstructorDescription {
case statsAbsValueAndPrev(current: Double, previous: Double)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self {
case .statsAbsValueAndPrev(let current, let previous):
if boxed {
buffer.appendInt32(-884757282)
}
serializeDouble(current, buffer: buffer, boxed: false)
serializeDouble(previous, buffer: buffer, boxed: false)
break
}
}
public func descriptionFields() -> (String, [(String, Any)]) {
switch self {
case .statsAbsValueAndPrev(let current, let previous):
return ("statsAbsValueAndPrev", [("current", current as Any), ("previous", previous as Any)])
}
}
public static func parse_statsAbsValueAndPrev(_ reader: BufferReader) -> StatsAbsValueAndPrev? {
var _1: Double?
_1 = reader.readDouble()
var _2: Double?
_2 = reader.readDouble()
let _c1 = _1 != nil
let _c2 = _2 != nil
if _c1 && _c2 {
return Api.StatsAbsValueAndPrev.statsAbsValueAndPrev(current: _1!, previous: _2!)
}
else {
return nil
}
}
}
}
public extension Api {
enum StatsDateRangeDays: TypeConstructorDescription {
case statsDateRangeDays(minDate: Int32, maxDate: Int32)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self {
case .statsDateRangeDays(let minDate, let maxDate):
if boxed {
buffer.appendInt32(-1237848657)
}
serializeInt32(minDate, buffer: buffer, boxed: false)
serializeInt32(maxDate, buffer: buffer, boxed: false)
break
}
}
public func descriptionFields() -> (String, [(String, Any)]) {
switch self {
case .statsDateRangeDays(let minDate, let maxDate):
return ("statsDateRangeDays", [("minDate", minDate as Any), ("maxDate", maxDate as Any)])
}
}
public static func parse_statsDateRangeDays(_ reader: BufferReader) -> StatsDateRangeDays? {
var _1: Int32?
_1 = reader.readInt32()
var _2: Int32?
_2 = reader.readInt32()
let _c1 = _1 != nil
let _c2 = _2 != nil
if _c1 && _c2 {
return Api.StatsDateRangeDays.statsDateRangeDays(minDate: _1!, maxDate: _2!)
}
else {
return nil
} }
public static func parse_starsTransactionPeerUnsupported(_ reader: BufferReader) -> StarsTransactionPeer? {
return Api.StarsTransactionPeer.starsTransactionPeerUnsupported
} }
} }

View File

@ -1,3 +1,83 @@
public extension Api {
enum StatsAbsValueAndPrev: TypeConstructorDescription {
case statsAbsValueAndPrev(current: Double, previous: Double)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self {
case .statsAbsValueAndPrev(let current, let previous):
if boxed {
buffer.appendInt32(-884757282)
}
serializeDouble(current, buffer: buffer, boxed: false)
serializeDouble(previous, buffer: buffer, boxed: false)
break
}
}
public func descriptionFields() -> (String, [(String, Any)]) {
switch self {
case .statsAbsValueAndPrev(let current, let previous):
return ("statsAbsValueAndPrev", [("current", current as Any), ("previous", previous as Any)])
}
}
public static func parse_statsAbsValueAndPrev(_ reader: BufferReader) -> StatsAbsValueAndPrev? {
var _1: Double?
_1 = reader.readDouble()
var _2: Double?
_2 = reader.readDouble()
let _c1 = _1 != nil
let _c2 = _2 != nil
if _c1 && _c2 {
return Api.StatsAbsValueAndPrev.statsAbsValueAndPrev(current: _1!, previous: _2!)
}
else {
return nil
}
}
}
}
public extension Api {
enum StatsDateRangeDays: TypeConstructorDescription {
case statsDateRangeDays(minDate: Int32, maxDate: Int32)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self {
case .statsDateRangeDays(let minDate, let maxDate):
if boxed {
buffer.appendInt32(-1237848657)
}
serializeInt32(minDate, buffer: buffer, boxed: false)
serializeInt32(maxDate, buffer: buffer, boxed: false)
break
}
}
public func descriptionFields() -> (String, [(String, Any)]) {
switch self {
case .statsDateRangeDays(let minDate, let maxDate):
return ("statsDateRangeDays", [("minDate", minDate as Any), ("maxDate", maxDate as Any)])
}
}
public static func parse_statsDateRangeDays(_ reader: BufferReader) -> StatsDateRangeDays? {
var _1: Int32?
_1 = reader.readInt32()
var _2: Int32?
_2 = reader.readInt32()
let _c1 = _1 != nil
let _c2 = _2 != nil
if _c1 && _c2 {
return Api.StatsDateRangeDays.statsDateRangeDays(minDate: _1!, maxDate: _2!)
}
else {
return nil
}
}
}
}
public extension Api { public extension Api {
enum StatsGraph: TypeConstructorDescription { enum StatsGraph: TypeConstructorDescription {
case statsGraph(flags: Int32, json: Api.DataJSON, zoomToken: String?) case statsGraph(flags: Int32, json: Api.DataJSON, zoomToken: String?)
@ -1340,89 +1420,3 @@ public extension Api {
} }
} }
public extension Api {
enum Timezone: TypeConstructorDescription {
case timezone(id: String, name: String, utcOffset: Int32)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self {
case .timezone(let id, let name, let utcOffset):
if boxed {
buffer.appendInt32(-7173643)
}
serializeString(id, buffer: buffer, boxed: false)
serializeString(name, buffer: buffer, boxed: false)
serializeInt32(utcOffset, buffer: buffer, boxed: false)
break
}
}
public func descriptionFields() -> (String, [(String, Any)]) {
switch self {
case .timezone(let id, let name, let utcOffset):
return ("timezone", [("id", id as Any), ("name", name as Any), ("utcOffset", utcOffset as Any)])
}
}
public static func parse_timezone(_ reader: BufferReader) -> Timezone? {
var _1: String?
_1 = parseString(reader)
var _2: String?
_2 = parseString(reader)
var _3: Int32?
_3 = reader.readInt32()
let _c1 = _1 != nil
let _c2 = _2 != nil
let _c3 = _3 != nil
if _c1 && _c2 && _c3 {
return Api.Timezone.timezone(id: _1!, name: _2!, utcOffset: _3!)
}
else {
return nil
}
}
}
}
public extension Api {
enum TopPeer: TypeConstructorDescription {
case topPeer(peer: Api.Peer, rating: Double)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self {
case .topPeer(let peer, let rating):
if boxed {
buffer.appendInt32(-305282981)
}
peer.serialize(buffer, true)
serializeDouble(rating, buffer: buffer, boxed: false)
break
}
}
public func descriptionFields() -> (String, [(String, Any)]) {
switch self {
case .topPeer(let peer, let rating):
return ("topPeer", [("peer", peer as Any), ("rating", rating as Any)])
}
}
public static func parse_topPeer(_ reader: BufferReader) -> TopPeer? {
var _1: Api.Peer?
if let signature = reader.readInt32() {
_1 = Api.parse(reader, signature: signature) as? Api.Peer
}
var _2: Double?
_2 = reader.readDouble()
let _c1 = _1 != nil
let _c2 = _2 != nil
if _c1 && _c2 {
return Api.TopPeer.topPeer(peer: _1!, rating: _2!)
}
else {
return nil
}
}
}
}

View File

@ -1,3 +1,89 @@
public extension Api {
enum Timezone: TypeConstructorDescription {
case timezone(id: String, name: String, utcOffset: Int32)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self {
case .timezone(let id, let name, let utcOffset):
if boxed {
buffer.appendInt32(-7173643)
}
serializeString(id, buffer: buffer, boxed: false)
serializeString(name, buffer: buffer, boxed: false)
serializeInt32(utcOffset, buffer: buffer, boxed: false)
break
}
}
public func descriptionFields() -> (String, [(String, Any)]) {
switch self {
case .timezone(let id, let name, let utcOffset):
return ("timezone", [("id", id as Any), ("name", name as Any), ("utcOffset", utcOffset as Any)])
}
}
public static func parse_timezone(_ reader: BufferReader) -> Timezone? {
var _1: String?
_1 = parseString(reader)
var _2: String?
_2 = parseString(reader)
var _3: Int32?
_3 = reader.readInt32()
let _c1 = _1 != nil
let _c2 = _2 != nil
let _c3 = _3 != nil
if _c1 && _c2 && _c3 {
return Api.Timezone.timezone(id: _1!, name: _2!, utcOffset: _3!)
}
else {
return nil
}
}
}
}
public extension Api {
enum TopPeer: TypeConstructorDescription {
case topPeer(peer: Api.Peer, rating: Double)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self {
case .topPeer(let peer, let rating):
if boxed {
buffer.appendInt32(-305282981)
}
peer.serialize(buffer, true)
serializeDouble(rating, buffer: buffer, boxed: false)
break
}
}
public func descriptionFields() -> (String, [(String, Any)]) {
switch self {
case .topPeer(let peer, let rating):
return ("topPeer", [("peer", peer as Any), ("rating", rating as Any)])
}
}
public static func parse_topPeer(_ reader: BufferReader) -> TopPeer? {
var _1: Api.Peer?
if let signature = reader.readInt32() {
_1 = Api.parse(reader, signature: signature) as? Api.Peer
}
var _2: Double?
_2 = reader.readDouble()
let _c1 = _1 != nil
let _c2 = _2 != nil
if _c1 && _c2 {
return Api.TopPeer.topPeer(peer: _1!, rating: _2!)
}
else {
return nil
}
}
}
}
public extension Api { public extension Api {
enum TopPeerCategory: TypeConstructorDescription { enum TopPeerCategory: TypeConstructorDescription {
case topPeerCategoryBotsInline case topPeerCategoryBotsInline

View File

@ -593,8 +593,8 @@ func messageTextEntitiesFromApiEntities(_ entities: [Api.MessageEntity]) -> [Mes
result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Underline)) result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Underline))
case let .messageEntityStrike(offset, length): case let .messageEntityStrike(offset, length):
result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Strikethrough)) result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Strikethrough))
case let .messageEntityBlockquote(offset, length): case let .messageEntityBlockquote(flags, offset, length):
result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .BlockQuote)) result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .BlockQuote(isCollapsed: (flags & (1 << 0)) != 0)))
case let .messageEntityBankCard(offset, length): case let .messageEntityBankCard(offset, length):
result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .BankCard)) result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .BankCard))
case let .messageEntitySpoiler(offset, length): case let .messageEntitySpoiler(offset, length):

View File

@ -40,8 +40,12 @@ func apiEntitiesFromMessageTextEntities(_ entities: [MessageTextEntity], associa
break break
case .Strikethrough: case .Strikethrough:
apiEntities.append(.messageEntityStrike(offset: offset, length: length)) apiEntities.append(.messageEntityStrike(offset: offset, length: length))
case .BlockQuote: case let .BlockQuote(isCollapsed):
apiEntities.append(.messageEntityBlockquote(offset: offset, length: length)) var flags: Int32 = 0
if isCollapsed {
flags |= 1 << 0
}
apiEntities.append(.messageEntityBlockquote(flags: flags, offset: offset, length: length))
case .Underline: case .Underline:
apiEntities.append(.messageEntityUnderline(offset: offset, length: length)) apiEntities.append(.messageEntityUnderline(offset: offset, length: length))
case .BankCard: case .BankCard:

View File

@ -1186,7 +1186,7 @@ private func parseEntities(_ entities: [SecretApi101.MessageEntity]) -> TextEnti
case let .messageEntityUnderline(offset, length): case let .messageEntityUnderline(offset, length):
result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Underline)) result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Underline))
case let .messageEntityBlockquote(offset, length): case let .messageEntityBlockquote(offset, length):
result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .BlockQuote)) result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .BlockQuote(isCollapsed: false)))
case .messageEntityUnknown: case .messageEntityUnknown:
break break
} }
@ -1223,7 +1223,7 @@ private func parseEntities(_ entities: [SecretApi144.MessageEntity]) -> TextEnti
case let .messageEntityUnderline(offset, length): case let .messageEntityUnderline(offset, length):
result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Underline)) result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Underline))
case let .messageEntityBlockquote(offset, length): case let .messageEntityBlockquote(offset, length):
result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .BlockQuote)) result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .BlockQuote(isCollapsed: false)))
case let .messageEntitySpoiler(offset, length): case let .messageEntitySpoiler(offset, length):
result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Spoiler)) result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Spoiler))
case let .messageEntityCustomEmoji(offset, length, documentId): case let .messageEntityCustomEmoji(offset, length, documentId):

View File

@ -18,7 +18,7 @@ public enum MessageTextEntityType: Equatable {
case TextMention(peerId: PeerId) case TextMention(peerId: PeerId)
case PhoneNumber case PhoneNumber
case Strikethrough case Strikethrough
case BlockQuote case BlockQuote(isCollapsed: Bool)
case Underline case Underline
case BankCard case BankCard
case Spoiler case Spoiler
@ -66,7 +66,7 @@ public struct MessageTextEntity: PostboxCoding, Codable, Equatable {
case 13: case 13:
self.type = .Strikethrough self.type = .Strikethrough
case 14: case 14:
self.type = .BlockQuote self.type = .BlockQuote(isCollapsed: decoder.decodeBoolForKey("cl", orElse: false))
case 15: case 15:
self.type = .Underline self.type = .Underline
case 16: case 16:
@ -124,7 +124,7 @@ public struct MessageTextEntity: PostboxCoding, Codable, Equatable {
case 13: case 13:
self.type = .Strikethrough self.type = .Strikethrough
case 14: case 14:
self.type = .BlockQuote self.type = .BlockQuote(isCollapsed: try container.decodeIfPresent(Bool.self, forKey: "cl") ?? false)
case 15: case 15:
self.type = .Underline self.type = .Underline
case 16: case 16:
@ -180,8 +180,9 @@ public struct MessageTextEntity: PostboxCoding, Codable, Equatable {
encoder.encodeInt32(12, forKey: "_rawValue") encoder.encodeInt32(12, forKey: "_rawValue")
case .Strikethrough: case .Strikethrough:
encoder.encodeInt32(13, forKey: "_rawValue") encoder.encodeInt32(13, forKey: "_rawValue")
case .BlockQuote: case let .BlockQuote(isCollapsed):
encoder.encodeInt32(14, forKey: "_rawValue") encoder.encodeInt32(14, forKey: "_rawValue")
encoder.encodeBool(isCollapsed, forKey: "cl")
case .Underline: case .Underline:
encoder.encodeInt32(15, forKey: "_rawValue") encoder.encodeInt32(15, forKey: "_rawValue")
case .BankCard: case .BankCard:
@ -239,8 +240,9 @@ public struct MessageTextEntity: PostboxCoding, Codable, Equatable {
try container.encode(12 as Int32, forKey: "_rawValue") try container.encode(12 as Int32, forKey: "_rawValue")
case .Strikethrough: case .Strikethrough:
try container.encode(13 as Int32, forKey: "_rawValue") try container.encode(13 as Int32, forKey: "_rawValue")
case .BlockQuote: case let .BlockQuote(isCollapsed):
try container.encode(14 as Int32, forKey: "_rawValue") try container.encode(14 as Int32, forKey: "_rawValue")
try container.encode(isCollapsed, forKey: "cl")
case .Underline: case .Underline:
try container.encode(15 as Int32, forKey: "_rawValue") try container.encode(15 as Int32, forKey: "_rawValue")
case .BankCard: case .BankCard:

View File

@ -230,6 +230,8 @@ private extension StarsContext.State.Transaction {
return nil return nil
} }
parsedPeer = .peer(EnginePeer(peer)) parsedPeer = .peer(EnginePeer(peer))
case .starsTransactionPeerPremiumBot, .starsTransactionPeerUnsupported:
return nil
} }
self.init(id: id, count: stars, date: date, peer: parsedPeer) self.init(id: id, count: stars, date: date, peer: parsedPeer)
} }

View File

@ -171,7 +171,7 @@ public func generateChatInputTextEntities(_ text: NSAttributedString, maxAnimate
} else if key == ChatTextInputAttributes.block, let value = value as? ChatTextInputTextQuoteAttribute { } else if key == ChatTextInputAttributes.block, let value = value as? ChatTextInputTextQuoteAttribute {
switch value.kind { switch value.kind {
case .quote: case .quote:
entities.append(MessageTextEntity(range: range.lowerBound ..< range.upperBound, type: .BlockQuote)) entities.append(MessageTextEntity(range: range.lowerBound ..< range.upperBound, type: .BlockQuote(isCollapsed: false)))
case let .code(language): case let .code(language):
entities.append(MessageTextEntity(range: range.lowerBound ..< range.upperBound, type: .Pre(language: language))) entities.append(MessageTextEntity(range: range.lowerBound ..< range.upperBound, type: .Pre(language: language)))
} }