Update API [skip ci]

This commit is contained in:
Isaac 2025-11-25 23:05:01 +08:00
parent 6e6b5b571e
commit ddcea95734
4 changed files with 41 additions and 20 deletions

View file

@ -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) }

View file

@ -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

View file

@ -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<Api.Passkey>) {
static func registerPasskey(credential: Api.InputPasskeyCredential) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Passkey>) {
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() {

View file

@ -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<String?, N
}
func _internal_requestCreatePasskey(network: Network, id: String, clientData: String, attestationObject: Data) -> Signal<TelegramPasskey?, NoError> {
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<Api.Passkey?, NoError> in
return .single(nil)