From ddcea957340948e43ae860acf94d8c3574cf113f Mon Sep 17 00:00:00 2001 From: Isaac <> Date: Tue, 25 Nov 2025 23:05:01 +0800 Subject: [PATCH] Update API [skip ci] --- submodules/TelegramApi/Sources/Api0.swift | 2 +- submodules/TelegramApi/Sources/Api19.swift | 34 +++++++++++++------ submodules/TelegramApi/Sources/Api39.swift | 7 ++-- .../Sources/Account/Account.swift | 18 +++++++--- 4 files changed, 41 insertions(+), 20 deletions(-) diff --git a/submodules/TelegramApi/Sources/Api0.swift b/submodules/TelegramApi/Sources/Api0.swift index 580df98cc9..c21a005241 100644 --- a/submodules/TelegramApi/Sources/Api0.swift +++ b/submodules/TelegramApi/Sources/Api0.swift @@ -759,7 +759,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = { dict[520887001] = { return Api.PaidReactionPrivacy.parse_paidReactionPrivacyAnonymous($0) } dict[543872158] = { return Api.PaidReactionPrivacy.parse_paidReactionPrivacyDefault($0) } dict[-596837136] = { return Api.PaidReactionPrivacy.parse_paidReactionPrivacyPeer($0) } - dict[1047842022] = { return Api.Passkey.parse_passkey($0) } + dict[-1738457409] = { return Api.Passkey.parse_passkey($0) } dict[982592842] = { return Api.PasswordKdfAlgo.parse_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow($0) } dict[-732254058] = { return Api.PasswordKdfAlgo.parse_passwordKdfAlgoUnknown($0) } dict[-368917890] = { return Api.PaymentCharge.parse_paymentCharge($0) } diff --git a/submodules/TelegramApi/Sources/Api19.swift b/submodules/TelegramApi/Sources/Api19.swift index 08b61965fe..2cb2a538fd 100644 --- a/submodules/TelegramApi/Sources/Api19.swift +++ b/submodules/TelegramApi/Sources/Api19.swift @@ -398,40 +398,52 @@ public extension Api { } public extension Api { enum Passkey: TypeConstructorDescription { - case passkey(id: String, name: String, date: Int32) + case passkey(flags: Int32, id: String, name: String, date: Int32, softwareEmojiId: Int64?, lastUsageDate: Int32?) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { - case .passkey(let id, let name, let date): + case .passkey(let flags, let id, let name, let date, let softwareEmojiId, let lastUsageDate): if boxed { - buffer.appendInt32(1047842022) + buffer.appendInt32(-1738457409) } + serializeInt32(flags, buffer: buffer, boxed: false) serializeString(id, buffer: buffer, boxed: false) serializeString(name, buffer: buffer, boxed: false) serializeInt32(date, buffer: buffer, boxed: false) + if Int(flags) & Int(1 << 0) != 0 {serializeInt64(softwareEmojiId!, buffer: buffer, boxed: false)} + if Int(flags) & Int(1 << 1) != 0 {serializeInt32(lastUsageDate!, buffer: buffer, boxed: false)} break } } public func descriptionFields() -> (String, [(String, Any)]) { switch self { - case .passkey(let id, let name, let date): - return ("passkey", [("id", id as Any), ("name", name as Any), ("date", date as Any)]) + case .passkey(let flags, let id, let name, let date, let softwareEmojiId, let lastUsageDate): + return ("passkey", [("flags", flags as Any), ("id", id as Any), ("name", name as Any), ("date", date as Any), ("softwareEmojiId", softwareEmojiId as Any), ("lastUsageDate", lastUsageDate as Any)]) } } public static func parse_passkey(_ reader: BufferReader) -> Passkey? { - var _1: String? - _1 = parseString(reader) + var _1: Int32? + _1 = reader.readInt32() var _2: String? _2 = parseString(reader) - var _3: Int32? - _3 = reader.readInt32() + var _3: String? + _3 = parseString(reader) + var _4: Int32? + _4 = reader.readInt32() + var _5: Int64? + if Int(_1!) & Int(1 << 0) != 0 {_5 = reader.readInt64() } + var _6: Int32? + if Int(_1!) & Int(1 << 1) != 0 {_6 = reader.readInt32() } let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil - if _c1 && _c2 && _c3 { - return Api.Passkey.passkey(id: _1!, name: _2!, date: _3!) + let _c4 = _4 != nil + let _c5 = (Int(_1!) & Int(1 << 0) == 0) || _5 != nil + let _c6 = (Int(_1!) & Int(1 << 1) == 0) || _6 != nil + if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 { + return Api.Passkey.passkey(flags: _1!, id: _2!, name: _3!, date: _4!, softwareEmojiId: _5, lastUsageDate: _6) } else { return nil diff --git a/submodules/TelegramApi/Sources/Api39.swift b/submodules/TelegramApi/Sources/Api39.swift index baf4aee0db..f9ccc43e45 100644 --- a/submodules/TelegramApi/Sources/Api39.swift +++ b/submodules/TelegramApi/Sources/Api39.swift @@ -1039,12 +1039,11 @@ public extension Api.functions.account { } } public extension Api.functions.account { - static func registerPasskey(credential: Api.InputPasskeyCredential, name: String) -> (FunctionDescription, Buffer, DeserializeFunctionResponse) { + static func registerPasskey(credential: Api.InputPasskeyCredential) -> (FunctionDescription, Buffer, DeserializeFunctionResponse) { let buffer = Buffer() - buffer.appendInt32(-810803168) + buffer.appendInt32(1437867990) credential.serialize(buffer, true) - serializeString(name, buffer: buffer, boxed: false) - return (FunctionDescription(name: "account.registerPasskey", parameters: [("credential", String(describing: credential)), ("name", String(describing: name))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.Passkey? in + return (FunctionDescription(name: "account.registerPasskey", parameters: [("credential", String(describing: credential))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.Passkey? in let reader = BufferReader(buffer) var result: Api.Passkey? if let signature = reader.readInt32() { diff --git a/submodules/TelegramCore/Sources/Account/Account.swift b/submodules/TelegramCore/Sources/Account/Account.swift index 095c35e18b..076f486ed2 100644 --- a/submodules/TelegramCore/Sources/Account/Account.swift +++ b/submodules/TelegramCore/Sources/Account/Account.swift @@ -457,11 +457,15 @@ public final class TelegramPasskey: Equatable { public let id: String public let name: String public let date: Int32 + public let emojiId: Int64? + public let lastUsageDate: Int32? - public init(id: String, name: String, date: Int32) { + public init(id: String, name: String, date: Int32, emojiId: Int64?, lastUsageDate: Int32?) { self.id = id self.name = name self.date = date + self.emojiId = emojiId + self.lastUsageDate = lastUsageDate } public static func ==(lhs: TelegramPasskey, rhs: TelegramPasskey) -> Bool { @@ -474,6 +478,12 @@ public final class TelegramPasskey: Equatable { if lhs.date != rhs.date { return false } + if lhs.emojiId != rhs.emojiId { + return false + } + if lhs.lastUsageDate != rhs.lastUsageDate { + return false + } return true } } @@ -481,8 +491,8 @@ public final class TelegramPasskey: Equatable { extension TelegramPasskey { convenience init(apiPasskey: Api.Passkey) { switch apiPasskey { - case let .passkey(id, name, date): - self.init(id: id, name: name, date: date) + case let .passkey(_, id, name, date, softwareEmojiId, lastUsageDate): + self.init(id: id, name: name, date: date, emojiId: softwareEmojiId, lastUsageDate: lastUsageDate) } } } @@ -527,7 +537,7 @@ func _internal_requestPasskeyRegistration(network: Network) -> Signal Signal { - return network.request(Api.functions.account.registerPasskey(credential: .inputPasskeyCredentialPublicKey(id: id, rawId: id, response: .inputPasskeyResponseRegister(clientData: .dataJSON(data: clientData), attestationData: Buffer(data: attestationObject))), name: "iCloud")) + return network.request(Api.functions.account.registerPasskey(credential: .inputPasskeyCredentialPublicKey(id: id, rawId: id, response: .inputPasskeyResponseRegister(clientData: .dataJSON(data: clientData), attestationData: Buffer(data: attestationObject))))) |> map(Optional.init) |> `catch` { _ -> Signal in return .single(nil)