Skip to content

Commit 54f21cd

Browse files
committed
Update API
1 parent 9025c8f commit 54f21cd

File tree

9 files changed

+96
-32
lines changed

9 files changed

+96
-32
lines changed

Telegram/Telegram-iOS/en.lproj/Localizable.strings

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13226,3 +13226,8 @@ Sorry for the inconvenience.";
1322613226

1322713227
"Stars.Transaction.Subscription.CancelledByBot" = "Your subscription was cancelled by the bot.";
1322813228
"Stars.Transaction.Subscription.CancelledByBusiness" = "Your subscription was cancelled by the business.";
13229+
13230+
"Gift.View.BotDescription" = "You can keep this gift in your Profile or hide it.";
13231+
13232+
"Notification.StarGift.Bot.Subtitle" = "Display this gift on your page.";
13233+
"Notification.StarGift.Bot.Subtitle.Displaying" = "You are displaying this gift on your page.";

submodules/TelegramApi/Sources/Api0.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
575575
dict[-1434950843] = { return Api.MessageAction.parse_messageActionSetChatTheme($0) }
576576
dict[1348510708] = { return Api.MessageAction.parse_messageActionSetChatWallPaper($0) }
577577
dict[1007897979] = { return Api.MessageAction.parse_messageActionSetMessagesTTL($0) }
578-
dict[-1682706620] = { return Api.MessageAction.parse_messageActionStarGift($0) }
578+
dict[139818551] = { return Api.MessageAction.parse_messageActionStarGift($0) }
579579
dict[1474192222] = { return Api.MessageAction.parse_messageActionSuggestProfilePhoto($0) }
580580
dict[228168278] = { return Api.MessageAction.parse_messageActionTopicCreate($0) }
581581
dict[-1064024032] = { return Api.MessageAction.parse_messageActionTopicEdit($0) }

submodules/TelegramApi/Sources/Api14.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,7 +1009,7 @@ public extension Api {
10091009
case messageActionSetChatTheme(emoticon: String)
10101010
case messageActionSetChatWallPaper(flags: Int32, wallpaper: Api.WallPaper)
10111011
case messageActionSetMessagesTTL(flags: Int32, period: Int32, autoSettingFrom: Int64?)
1012-
case messageActionStarGift(flags: Int32, gift: Api.StarGift, message: Api.TextWithEntities?, convertStars: Int64)
1012+
case messageActionStarGift(flags: Int32, gift: Api.StarGift, message: Api.TextWithEntities?, convertStars: Int64?)
10131013
case messageActionSuggestProfilePhoto(photo: Api.Photo)
10141014
case messageActionTopicCreate(flags: Int32, title: String, iconColor: Int32, iconEmojiId: Int64?)
10151015
case messageActionTopicEdit(flags: Int32, title: String?, iconEmojiId: Int64?, closed: Api.Bool?, hidden: Api.Bool?)
@@ -1355,12 +1355,12 @@ public extension Api {
13551355
break
13561356
case .messageActionStarGift(let flags, let gift, let message, let convertStars):
13571357
if boxed {
1358-
buffer.appendInt32(-1682706620)
1358+
buffer.appendInt32(139818551)
13591359
}
13601360
serializeInt32(flags, buffer: buffer, boxed: false)
13611361
gift.serialize(buffer, true)
13621362
if Int(flags) & Int(1 << 1) != 0 {message!.serialize(buffer, true)}
1363-
serializeInt64(convertStars, buffer: buffer, boxed: false)
1363+
if Int(flags) & Int(1 << 4) != 0 {serializeInt64(convertStars!, buffer: buffer, boxed: false)}
13641364
break
13651365
case .messageActionSuggestProfilePhoto(let photo):
13661366
if boxed {
@@ -2142,13 +2142,13 @@ public extension Api {
21422142
_3 = Api.parse(reader, signature: signature) as? Api.TextWithEntities
21432143
} }
21442144
var _4: Int64?
2145-
_4 = reader.readInt64()
2145+
if Int(_1!) & Int(1 << 4) != 0 {_4 = reader.readInt64() }
21462146
let _c1 = _1 != nil
21472147
let _c2 = _2 != nil
21482148
let _c3 = (Int(_1!) & Int(1 << 1) == 0) || _3 != nil
2149-
let _c4 = _4 != nil
2149+
let _c4 = (Int(_1!) & Int(1 << 4) == 0) || _4 != nil
21502150
if _c1 && _c2 && _c3 && _c4 {
2151-
return Api.MessageAction.messageActionStarGift(flags: _1!, gift: _2!, message: _3, convertStars: _4!)
2151+
return Api.MessageAction.messageActionStarGift(flags: _1!, gift: _2!, message: _3, convertStars: _4)
21522152
}
21532153
else {
21542154
return nil

submodules/TelegramApi/Sources/Api36.swift

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2263,6 +2263,23 @@ public extension Api.functions.bots {
22632263
})
22642264
}
22652265
}
2266+
public extension Api.functions.bots {
2267+
static func checkDownloadFileParams(bot: Api.InputUser, fileName: String, url: String) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Bool>) {
2268+
let buffer = Buffer()
2269+
buffer.appendInt32(1342666121)
2270+
bot.serialize(buffer, true)
2271+
serializeString(fileName, buffer: buffer, boxed: false)
2272+
serializeString(url, buffer: buffer, boxed: false)
2273+
return (FunctionDescription(name: "bots.checkDownloadFileParams", parameters: [("bot", String(describing: bot)), ("fileName", String(describing: fileName)), ("url", String(describing: url))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.Bool? in
2274+
let reader = BufferReader(buffer)
2275+
var result: Api.Bool?
2276+
if let signature = reader.readInt32() {
2277+
result = Api.parse(reader, signature: signature) as? Api.Bool
2278+
}
2279+
return result
2280+
})
2281+
}
2282+
}
22662283
public extension Api.functions.bots {
22672284
static func deletePreviewMedia(bot: Api.InputUser, langCode: String, media: [Api.InputMedia]) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Bool>) {
22682285
let buffer = Buffer()

submodules/TelegramCore/Sources/State/Serialization.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ public class BoxedMessage: NSObject {
210210

211211
public class Serialization: NSObject, MTSerialization {
212212
public func currentLayer() -> UInt {
213-
return 194
213+
return 193
214214
}
215215

216216
public func parseMessage(_ data: Data!) -> Any! {

submodules/TelegramCore/Sources/SyncCore/SyncCore_TelegramMediaAction.swift

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public enum TelegramMediaActionType: PostboxCoding, Equatable {
130130
case paymentRefunded(peerId: PeerId, currency: String, totalAmount: Int64, payload: Data?, transactionId: String)
131131
case giftStars(currency: String, amount: Int64, count: Int64, cryptoCurrency: String?, cryptoAmount: Int64?, transactionId: String?)
132132
case prizeStars(amount: Int64, isUnclaimed: Bool, boostPeerId: PeerId?, transactionId: String?, giveawayMessageId: MessageId?)
133-
case starGift(gift: StarGift, convertStars: Int64, text: String?, entities: [MessageTextEntity]?, nameHidden: Bool, savedToProfile: Bool, converted: Bool)
133+
case starGift(gift: StarGift, convertStars: Int64?, text: String?, entities: [MessageTextEntity]?, nameHidden: Bool, savedToProfile: Bool, converted: Bool)
134134

135135
public init(decoder: PostboxDecoder) {
136136
let rawValue: Int32 = decoder.decodeInt32ForKey("_rawValue", orElse: 0)
@@ -252,7 +252,7 @@ public enum TelegramMediaActionType: PostboxCoding, Equatable {
252252
}
253253
self = .prizeStars(amount: decoder.decodeInt64ForKey("amount", orElse: 0), isUnclaimed: decoder.decodeBoolForKey("unclaimed", orElse: false), boostPeerId: boostPeerId, transactionId: decoder.decodeOptionalStringForKey("transactionId"), giveawayMessageId: giveawayMessageId)
254254
case 44:
255-
self = .starGift(gift: decoder.decodeObjectForKey("gift", decoder: { StarGift(decoder: $0) }) as! StarGift, convertStars: decoder.decodeInt64ForKey("convertStars", orElse: 0), text: decoder.decodeOptionalStringForKey("text"), entities: decoder.decodeOptionalObjectArrayWithDecoderForKey("entities"), nameHidden: decoder.decodeBoolForKey("nameHidden", orElse: false), savedToProfile: decoder.decodeBoolForKey("savedToProfile", orElse: false), converted: decoder.decodeBoolForKey("converted", orElse: false))
255+
self = .starGift(gift: decoder.decodeObjectForKey("gift", decoder: { StarGift(decoder: $0) }) as! StarGift, convertStars: decoder.decodeOptionalInt64ForKey("convertStars"), text: decoder.decodeOptionalStringForKey("text"), entities: decoder.decodeOptionalObjectArrayWithDecoderForKey("entities"), nameHidden: decoder.decodeBoolForKey("nameHidden", orElse: false), savedToProfile: decoder.decodeBoolForKey("savedToProfile", orElse: false), converted: decoder.decodeBoolForKey("converted", orElse: false))
256256
default:
257257
self = .unknown
258258
}
@@ -548,7 +548,11 @@ public enum TelegramMediaActionType: PostboxCoding, Equatable {
548548
case let .starGift(gift, convertStars, text, entities, nameHidden, savedToProfile, converted):
549549
encoder.encodeInt32(44, forKey: "_rawValue")
550550
encoder.encodeObject(gift, forKey: "gift")
551-
encoder.encodeInt64(convertStars, forKey: "convertStars")
551+
if let convertStars {
552+
encoder.encodeInt64(convertStars, forKey: "convertStars")
553+
} else {
554+
encoder.encodeNil(forKey: "convertStars")
555+
}
552556
if let text, let entities {
553557
encoder.encodeString(text, forKey: "text")
554558
encoder.encodeObjectArray(entities, forKey: "entities")

submodules/TelegramCore/Sources/TelegramEngine/Payments/StarGifts.swift

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,24 @@ public final class StarGiftsList: Codable, Equatable {
2828
}
2929

3030
public struct StarGift: Equatable, Codable, PostboxCoding {
31+
public struct Flags: OptionSet {
32+
public var rawValue: Int32
33+
34+
public init(rawValue: Int32) {
35+
self.rawValue = rawValue
36+
}
37+
38+
public static let isBirthdayGift = Flags(rawValue: 1 << 0)
39+
}
40+
3141
enum CodingKeys: String, CodingKey {
3242
case id
3343
case file
3444
case price
3545
case convertStars
3646
case availability
3747
case soldOut
48+
case flags
3849
}
3950

4051
public struct Availability: Equatable, Codable, PostboxCoding {
@@ -97,14 +108,16 @@ public struct StarGift: Equatable, Codable, PostboxCoding {
97108
public let convertStars: Int64
98109
public let availability: Availability?
99110
public let soldOut: SoldOut?
111+
public let flags: Flags
100112

101-
public init(id: Int64, file: TelegramMediaFile, price: Int64, convertStars: Int64, availability: Availability?, soldOut: SoldOut?) {
113+
public init(id: Int64, file: TelegramMediaFile, price: Int64, convertStars: Int64, availability: Availability?, soldOut: SoldOut?, flags: Flags) {
102114
self.id = id
103115
self.file = file
104116
self.price = price
105117
self.convertStars = convertStars
106118
self.availability = availability
107119
self.soldOut = soldOut
120+
self.flags = flags
108121
}
109122

110123
public init(from decoder: Decoder) throws {
@@ -121,6 +134,7 @@ public struct StarGift: Equatable, Codable, PostboxCoding {
121134
self.convertStars = try container.decodeIfPresent(Int64.self, forKey: .convertStars) ?? 0
122135
self.availability = try container.decodeIfPresent(Availability.self, forKey: .availability)
123136
self.soldOut = try container.decodeIfPresent(SoldOut.self, forKey: .soldOut)
137+
self.flags = Flags(rawValue: try container .decodeIfPresent(Int32.self, forKey: .flags) ?? 0)
124138
}
125139

126140
public init(decoder: PostboxDecoder) {
@@ -130,6 +144,7 @@ public struct StarGift: Equatable, Codable, PostboxCoding {
130144
self.convertStars = decoder.decodeInt64ForKey(CodingKeys.convertStars.rawValue, orElse: 0)
131145
self.availability = decoder.decodeObjectForKey(CodingKeys.availability.rawValue, decoder: { StarGift.Availability(decoder: $0) }) as? StarGift.Availability
132146
self.soldOut = decoder.decodeObjectForKey(CodingKeys.soldOut.rawValue, decoder: { StarGift.SoldOut(decoder: $0) }) as? StarGift.SoldOut
147+
self.flags = Flags(rawValue: decoder.decodeInt32ForKey(CodingKeys.flags.rawValue, orElse: 0))
133148
}
134149

135150
public func encode(to encoder: Encoder) throws {
@@ -145,6 +160,7 @@ public struct StarGift: Equatable, Codable, PostboxCoding {
145160
try container.encode(self.convertStars, forKey: .convertStars)
146161
try container.encodeIfPresent(self.availability, forKey: .availability)
147162
try container.encodeIfPresent(self.soldOut, forKey: .soldOut)
163+
try container.encode(self.flags.rawValue, forKey: .flags)
148164
}
149165

150166
public func encode(_ encoder: PostboxEncoder) {
@@ -162,13 +178,19 @@ public struct StarGift: Equatable, Codable, PostboxCoding {
162178
} else {
163179
encoder.encodeNil(forKey: CodingKeys.soldOut.rawValue)
164180
}
181+
encoder.encodeInt32(self.flags.rawValue, forKey: CodingKeys.flags.rawValue)
165182
}
166183
}
167184

168185
extension StarGift {
169186
init?(apiStarGift: Api.StarGift) {
170187
switch apiStarGift {
171-
case let .starGift(_, id, sticker, stars, availabilityRemains, availabilityTotal, convertStars, firstSale, lastSale):
188+
case let .starGift(apiFlags, id, sticker, stars, availabilityRemains, availabilityTotal, convertStars, firstSale, lastSale):
189+
var flags = Flags()
190+
if (apiFlags & (1 << 2)) != 0 {
191+
flags.insert(.isBirthdayGift)
192+
}
193+
172194
var availability: Availability?
173195
if let availabilityRemains, let availabilityTotal {
174196
availability = Availability(remains: availabilityRemains, total: availabilityTotal)
@@ -180,7 +202,7 @@ extension StarGift {
180202
guard let file = telegramMediaFileFromApiDocument(sticker, altDocuments: nil) else {
181203
return nil
182204
}
183-
self.init(id: id, file: file, price: stars, convertStars: convertStars, availability: availability, soldOut: soldOut)
205+
self.init(id: id, file: file, price: stars, convertStars: convertStars, availability: availability, soldOut: soldOut, flags: flags)
184206
}
185207
}
186208
}

submodules/TelegramUI/Components/Chat/ChatMessageGiftBubbleContentNode/Sources/ChatMessageGiftBubbleContentNode.swift

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -416,21 +416,33 @@ public class ChatMessageGiftBubbleContentNode: ChatMessageBubbleContentNode {
416416
} else {
417417
if incoming {
418418
if converted {
419-
text = item.presentationData.strings.Notification_StarGift_Subtitle_Converted(item.presentationData.strings.Notification_StarGift_Subtitle_Converted_Stars(Int32(convertStars))).string
419+
text = item.presentationData.strings.Notification_StarGift_Subtitle_Converted(item.presentationData.strings.Notification_StarGift_Subtitle_Converted_Stars(Int32(convertStars ?? 0))).string
420420
} else if savedToProfile {
421-
text = item.presentationData.strings.Notification_StarGift_Subtitle_Displaying(item.presentationData.strings.Notification_StarGift_Subtitle_Displaying_Stars(Int32(convertStars))).string
421+
if let convertStars {
422+
text = item.presentationData.strings.Notification_StarGift_Subtitle_Displaying(item.presentationData.strings.Notification_StarGift_Subtitle_Displaying_Stars(Int32(convertStars))).string
423+
} else {
424+
text = item.presentationData.strings.Notification_StarGift_Bot_Subtitle_Displaying
425+
}
422426
} else {
423-
text = item.presentationData.strings.Notification_StarGift_Subtitle(item.presentationData.strings.Notification_StarGift_Subtitle_Stars(Int32(convertStars))).string
427+
if let convertStars {
428+
text = item.presentationData.strings.Notification_StarGift_Subtitle(item.presentationData.strings.Notification_StarGift_Subtitle_Stars(Int32(convertStars))).string
429+
} else {
430+
text = item.presentationData.strings.Notification_StarGift_Bot_Subtitle
431+
}
424432
}
425433
} else {
426434
var peerName = ""
427435
if let peer = item.message.peers[item.message.id.peerId] {
428436
peerName = EnginePeer(peer).compactDisplayTitle
429437
}
430438
if peerName.isEmpty {
431-
text = item.presentationData.strings.Notification_StarGift_Subtitle(item.presentationData.strings.Notification_StarGift_Subtitle_Stars(Int32(convertStars))).string
439+
if let convertStars {
440+
text = item.presentationData.strings.Notification_StarGift_Subtitle(item.presentationData.strings.Notification_StarGift_Subtitle_Stars(Int32(convertStars))).string
441+
} else {
442+
text = item.presentationData.strings.Notification_StarGift_Bot_Subtitle
443+
}
432444
} else {
433-
text = item.presentationData.strings.Notification_StarGift_Subtitle_Other(peerName, item.presentationData.strings.Notification_StarGift_Subtitle_Other_Stars(Int32(convertStars))).string
445+
text = item.presentationData.strings.Notification_StarGift_Subtitle_Other(peerName, item.presentationData.strings.Notification_StarGift_Subtitle_Other_Stars(Int32(convertStars ?? 0))).string
434446
}
435447
}
436448
}

0 commit comments

Comments
 (0)