diff --git a/TelegramCore/RequestSecureIdForm.swift b/TelegramCore/RequestSecureIdForm.swift index 532ee2dbcb..fc6e51c897 100644 --- a/TelegramCore/RequestSecureIdForm.swift +++ b/TelegramCore/RequestSecureIdForm.swift @@ -246,17 +246,22 @@ public struct EncryptedSecureIdForm { public func requestSecureIdForm(postbox: Postbox, network: Network, peerId: PeerId, scope: String, publicKey: String) -> Signal { if peerId.namespace != Namespaces.Peer.CloudUser { - return .fail(.serverError("PEER IS NOT A BOT")) + return .fail(.serverError("BOT_INVALID")) + } + if scope.isEmpty { + return .fail(.serverError("SCOPE_EMPTY")) + } + if publicKey.isEmpty { + return .fail(.serverError("PUBLIC_KEY_REQUIRED")) } return network.request(Api.functions.account.getAuthorizationForm(botId: peerId.id, scope: scope, publicKey: publicKey)) |> mapError { error -> RequestSecureIdFormError in switch error.errorDescription { - case "APP_VERSION_OUTDATED": - return .versionOutdated - default: - return .serverError(error.errorDescription) - } - + case "APP_VERSION_OUTDATED": + return .versionOutdated + default: + return .serverError(error.errorDescription) + } } |> mapToSignal { result -> Signal in return postbox.transaction { transaction -> EncryptedSecureIdForm in diff --git a/TelegramCore/SaveSecureIdValue.swift b/TelegramCore/SaveSecureIdValue.swift index 4a678fb284..050c5fad44 100644 --- a/TelegramCore/SaveSecureIdValue.swift +++ b/TelegramCore/SaveSecureIdValue.swift @@ -12,6 +12,7 @@ import Foundation public enum SaveSecureIdValueError { case generic case verificationRequired + case versionOutdated } struct EncryptedSecureData { @@ -226,10 +227,14 @@ public func saveSecureIdValue(postbox: Postbox, network: Network, context: Secur } let save = network.request(Api.functions.account.saveSecureValue(value: inputValue, secureSecretId: context.id)) |> mapError { error -> SaveSecureIdValueError in - if error.errorDescription == "PHONE_VERIFICATION_NEEDED" || error.errorDescription == "EMAIL_VERIFICATION_NEEDED" { - return .verificationRequired + switch error.errorDescription { + case "PHONE_VERIFICATION_NEEDED", "EMAIL_VERIFICATION_NEEDED": + return .verificationRequired + case "APP_VERSION_OUTDATED": + return .versionOutdated + default: + return .generic } - return .generic } |> mapToSignal { result -> Signal in guard let parsedValue = parseSecureValue(context: context, value: result, errors: []) else { @@ -255,12 +260,18 @@ public func saveSecureIdValue(postbox: Postbox, network: Network, context: Secur public enum DeleteSecureIdValueError { case generic + case versionOutdated } 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 + |> mapError { error -> DeleteSecureIdValueError in + switch error.errorDescription { + case "APP_VERSION_OUTDATED": + return .versionOutdated + default: + return .generic + } } |> mapToSignal { _ -> Signal in return .complete() @@ -308,6 +319,7 @@ public func dropSecureId(network: Network, currentPassword: String) -> Signal Signal { return network.request(Api.functions.account.getAllSecureValues()) - |> mapError { _ -> GetAllSecureIdValuesError in - return .generic + |> mapError { error -> GetAllSecureIdValuesError in + switch error.errorDescription { + case "APP_VERSION_OUTDATED": + return .versionOutdated + default: + return .generic + } } |> map { result in return EncryptedAllSecureIdValues(values: result)