From 2a22161d4d411cd7628a3f01cb5a41536cb33399 Mon Sep 17 00:00:00 2001 From: Peter Iakovlev Date: Tue, 3 Apr 2018 16:19:15 +0400 Subject: [PATCH] no message --- TelegramCore/GrantSecureIdAccess.swift | 27 ++++++++++++++++++ TelegramCore/SaveSecureIdValue.swift | 8 +++--- TelegramCore/SecureIdValue.swift | 38 ++++++++++++++++++++++++++ TelegramCore/VerifySecureIdValue.swift | 4 +-- 4 files changed, 71 insertions(+), 6 deletions(-) diff --git a/TelegramCore/GrantSecureIdAccess.swift b/TelegramCore/GrantSecureIdAccess.swift index 34ef0170a1..03d13cea68 100644 --- a/TelegramCore/GrantSecureIdAccess.swift +++ b/TelegramCore/GrantSecureIdAccess.swift @@ -36,6 +36,33 @@ func apiSecureValueType(value: SecureIdValue) -> Api.SecureValueType { return type } +func apiSecureValueType(key: SecureIdValueKey) -> Api.SecureValueType { + let type: Api.SecureValueType + switch key { + case .personalDetails: + type = .secureValueTypePersonalDetails + case .passport: + type = .secureValueTypePassport + case .driversLicense: + type = .secureValueTypeDriverLicense + case .idCard: + type = .secureValueTypeIdentityCard + case .address: + type = .secureValueTypeAddress + case .bankStatement: + type = .secureValueTypeBankStatement + case .utilityBill: + type = .secureValueTypeUtilityBill + case .rentalAgreement: + type = .secureValueTypeRentalAgreement + case .phone: + type = .secureValueTypePhone + case .email: + type = .secureValueTypeEmail + } + return type +} + private func credentialsValueTypeName(value: SecureIdValue) -> String { switch value { case .personalDetails: diff --git a/TelegramCore/SaveSecureIdValue.swift b/TelegramCore/SaveSecureIdValue.swift index 2f4a3e4052..83758d92c9 100644 --- a/TelegramCore/SaveSecureIdValue.swift +++ b/TelegramCore/SaveSecureIdValue.swift @@ -187,8 +187,8 @@ private func makeInputSecureValue(context: SecureIdAccessContext, value: SecureI return Api.InputSecureValue.inputSecureValue(flags: flags, type: inputData.type, data: secureData, files: files, plainData: inputData.publicData, selfie: inputData.selfieReference.flatMap(apiInputSecretFile)) } -public func saveSecureIdValue(network: Network, context: SecureIdAccessContext, valueContext: SecureIdValueAccessContext, value: SecureIdValue) -> Signal { - let delete = deleteSecureIdValue(network: network, value: value) +public func saveSecureIdValue(network: Network, context: SecureIdAccessContext, value: SecureIdValue) -> Signal { + let delete = deleteSecureIdValues(network: network, keys: Set([value.key])) |> mapError { _ -> SaveSecureIdValueError in return .generic } @@ -227,8 +227,8 @@ public enum DeleteSecureIdValueError { case generic } -public func deleteSecureIdValue(network: Network, value: SecureIdValue) -> Signal { - return network.request(Api.functions.account.deleteSecureValue(types: [apiSecureValueType(value: value)])) +public func deleteSecureIdValues(network: Network, keys: Set) -> Signal { + return network.request(Api.functions.account.deleteSecureValue(types: keys.map(apiSecureValueType(key:)))) |> mapError { _ -> DeleteSecureIdValueError in return .generic } diff --git a/TelegramCore/SecureIdValue.swift b/TelegramCore/SecureIdValue.swift index 4f26499b9d..129773af89 100644 --- a/TelegramCore/SecureIdValue.swift +++ b/TelegramCore/SecureIdValue.swift @@ -1,5 +1,18 @@ import Foundation +public enum SecureIdValueKey: Int32 { + case personalDetails + case passport + case driversLicense + case idCard + case address + case utilityBill + case bankStatement + case rentalAgreement + case phone + case email +} + public enum SecureIdValue: Equatable { case personalDetails(SecureIdPersonalDetailsValue) case passport(SecureIdPassportValue) @@ -12,6 +25,31 @@ public enum SecureIdValue: Equatable { case phone(SecureIdPhoneValue) case email(SecureIdEmailValue) + public var key: SecureIdValueKey { + switch self { + case .personalDetails: + return .personalDetails + case .passport: + return .passport + case .driversLicense: + return .driversLicense + case .idCard: + return .idCard + case .address: + return .address + case .utilityBill: + return .utilityBill + case .bankStatement: + return .bankStatement + case .rentalAgreement: + return .rentalAgreement + case .phone: + return .phone + case .email: + return .email + } + } + func serialize() -> ([String: Any], [SecureIdVerificationDocumentReference], SecureIdVerificationDocumentReference?)? { switch self { case let .personalDetails(personalDetails): diff --git a/TelegramCore/VerifySecureIdValue.swift b/TelegramCore/VerifySecureIdValue.swift index 131897dce4..425cd54a00 100644 --- a/TelegramCore/VerifySecureIdValue.swift +++ b/TelegramCore/VerifySecureIdValue.swift @@ -59,7 +59,7 @@ public func secureIdCommitPhoneVerification(network: Network, context: SecureIdA return .generic } |> mapToSignal { _ -> Signal in - return saveSecureIdValue(network: network, context: context, valueContext: generateSecureIdValueEmptyAccessContext()!, value: .phone(SecureIdPhoneValue(phone: payload.phone))) + return saveSecureIdValue(network: network, context: context, value: .phone(SecureIdPhoneValue(phone: payload.phone))) |> mapError { _ -> SecureIdCommitPhoneVerificationError in return .generic } @@ -106,7 +106,7 @@ public func secureIdCommitEmailVerification(network: Network, context: SecureIdA return .generic } |> mapToSignal { _ -> Signal in - return saveSecureIdValue(network: network, context: context, valueContext: generateSecureIdValueEmptyAccessContext()!, value: .email(SecureIdEmailValue(email: payload.email))) + return saveSecureIdValue(network: network, context: context, value: .email(SecureIdEmailValue(email: payload.email))) |> mapError { _ -> SecureIdCommitEmailVerificationError in return .generic }