mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 22:55:00 +00:00
Bot auth
This commit is contained in:
@@ -1584,5 +1584,33 @@ public extension TelegramEngine.EngineData.Item {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public struct BotBiometricsState: TelegramEngineDataItem, TelegramEngineMapKeyDataItem, PostboxViewDataItem {
|
||||
public typealias Result = TelegramBotBiometricsState
|
||||
|
||||
fileprivate var id: EnginePeer.Id
|
||||
public var mapKey: EnginePeer.Id {
|
||||
return self.id
|
||||
}
|
||||
|
||||
public init(id: EnginePeer.Id) {
|
||||
self.id = id
|
||||
}
|
||||
|
||||
var key: PostboxViewKey {
|
||||
return .preferences(keys: Set([PreferencesKeys.botBiometricsState(peerId: self.id)]))
|
||||
}
|
||||
|
||||
func extract(view: PostboxView) -> Result {
|
||||
guard let view = view as? PreferencesView else {
|
||||
preconditionFailure()
|
||||
}
|
||||
if let state = view.values[PreferencesKeys.botBiometricsState(peerId: self.id)]?.get(TelegramBotBiometricsState.self) {
|
||||
return state
|
||||
} else {
|
||||
return TelegramBotBiometricsState.default
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -319,3 +319,42 @@ func _internal_invokeBotCustomMethod(postbox: Postbox, network: Network, botId:
|
||||
|> castError(InvokeBotCustomMethodError.self)
|
||||
|> switchToLatest
|
||||
}
|
||||
|
||||
public struct TelegramBotBiometricsState: Codable, Equatable {
|
||||
public struct OpaqueToken: Codable, Equatable {
|
||||
public let publicKey: Data
|
||||
public let data: Data
|
||||
|
||||
public init(publicKey: Data, data: Data) {
|
||||
self.publicKey = publicKey
|
||||
self.data = data
|
||||
}
|
||||
}
|
||||
|
||||
public var accessRequested: Bool
|
||||
public var accessGranted: Bool
|
||||
public var opaqueToken: OpaqueToken?
|
||||
|
||||
public static var `default`: TelegramBotBiometricsState {
|
||||
return TelegramBotBiometricsState(
|
||||
accessRequested: false,
|
||||
accessGranted: false,
|
||||
opaqueToken: nil
|
||||
)
|
||||
}
|
||||
|
||||
public init(accessRequested: Bool, accessGranted: Bool, opaqueToken: OpaqueToken?) {
|
||||
self.accessRequested = accessRequested
|
||||
self.accessGranted = accessGranted
|
||||
self.opaqueToken = opaqueToken
|
||||
}
|
||||
}
|
||||
|
||||
func _internal_updateBotBiometricsState(account: Account, peerId: EnginePeer.Id, update: @escaping (TelegramBotBiometricsState) -> TelegramBotBiometricsState) -> Signal<Never, NoError> {
|
||||
return account.postbox.transaction { transaction -> Void in
|
||||
let previousState = transaction.getPreferencesEntry(key: PreferencesKeys.botBiometricsState(peerId: peerId))?.get(TelegramBotBiometricsState.self) ?? TelegramBotBiometricsState.default
|
||||
|
||||
transaction.setPreferencesEntry(key: PreferencesKeys.botBiometricsState(peerId: peerId), value: PreferencesEntry(update(previousState)))
|
||||
}
|
||||
|> ignoreValues
|
||||
}
|
||||
|
||||
@@ -1490,6 +1490,10 @@ public extension TelegramEngine {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public func updateBotBiometricsState(peerId: EnginePeer.Id, update: @escaping (TelegramBotBiometricsState) -> TelegramBotBiometricsState) {
|
||||
let _ = _internal_updateBotBiometricsState(account: self.account, peerId: peerId, update: update).startStandalone()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user