no message

This commit is contained in:
Mikhail Filimonov
2018-04-24 17:51:09 +04:00
parent 81add5e040
commit 495afdcbf3
2 changed files with 37 additions and 6 deletions

View File

@@ -44,7 +44,6 @@ private final class ProxyServerItemContext {
final class ProxyServersStatusesImpl {
private let queue: Queue
private let account: Account
private var contexts: [ProxyServerSettings: ProxyServerItemContext] = [:]
private var serversDisposable: Disposable?
@@ -56,9 +55,8 @@ final class ProxyServersStatusesImpl {
}
let values = Promise<[ProxyServerSettings: ProxyServerStatus]>([:])
init(queue: Queue, account: Account, servers: Signal<[ProxyServerSettings], NoError>) {
init(queue: Queue, network: Network, servers: Signal<[ProxyServerSettings], NoError>) {
self.queue = queue
self.account = account
self.serversDisposable = (servers
|> deliverOn(self.queue)).start(next: { [weak self] servers in
@@ -66,7 +64,7 @@ final class ProxyServersStatusesImpl {
let validKeys = Set<ProxyServerSettings>(servers)
for key in validKeys {
if strongSelf.contexts[key] == nil {
let context = ProxyServerItemContext(queue: strongSelf.queue, context: account.network.context, datacenterId: account.network.datacenterId, server: key, updated: { value in
let context = ProxyServerItemContext(queue: strongSelf.queue, context: network.context, datacenterId: network.datacenterId, server: key, updated: { value in
queue.async {
if let strongSelf = self {
strongSelf.contexts[key]?.value = value
@@ -111,10 +109,10 @@ final class ProxyServersStatusesImpl {
public final class ProxyServersStatuses {
private let impl: QueueLocalObject<ProxyServersStatusesImpl>
public init(account: Account, servers: Signal<[ProxyServerSettings], NoError>) {
public init(network: Network, servers: Signal<[ProxyServerSettings], NoError>) {
let queue = Queue()
self.impl = QueueLocalObject(queue: queue, generate: {
return ProxyServersStatusesImpl(queue: queue, account: account, servers: servers)
return ProxyServersStatusesImpl(queue: queue, network: network, servers: servers)
})
}

View File

@@ -244,3 +244,36 @@ public func deleteSecureIdValues(network: Network, keys: Set<SecureIdValueKey>)
return .complete()
}
}
public func dropSecureId(network: Network, currentPassword: String) -> Signal<Void, AuthorizationPasswordVerificationError> {
return twoStepAuthData(network)
|> mapError { _ -> AuthorizationPasswordVerificationError in
return .generic
}
|> mapToSignal { authData -> Signal<Void, AuthorizationPasswordVerificationError> in
let currentPasswordHash: Buffer
if let currentSalt = authData.currentSalt {
var data = Data()
data.append(currentSalt)
data.append(currentPassword.data(using: .utf8, allowLossyConversion: true)!)
data.append(currentSalt)
currentPasswordHash = Buffer(data: sha256Digest(data))
} else {
currentPasswordHash = Buffer(data: Data())
}
let flags: Int32 = 1 << 1
let settings = network.request(Api.functions.account.getPasswordSettings(currentPasswordHash: currentPasswordHash), automaticFloodWait: false) |> mapError { error in
return AuthorizationPasswordVerificationError.generic
}
return settings |> mapToSignal { value -> Signal<Void, AuthorizationPasswordVerificationError> in
switch value {
case let .passwordSettings(email, secureSalt, _, _):
return network.request(Api.functions.account.updatePasswordSettings(currentPasswordHash: currentPasswordHash, newSettings: Api.account.PasswordInputSettings.passwordInputSettings(flags: flags, newSalt: secureSalt, newPasswordHash: currentPasswordHash, hint: nil, email: email, newSecureSalt: secureSalt, newSecureSecret: nil, newSecureSecretId: nil)), automaticFloodWait: false) |> map {_ in} |> mapError {_ in return AuthorizationPasswordVerificationError.generic}
}
}
}
}