mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-24 07:05:35 +00:00
no message
This commit is contained in:
@@ -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)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -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}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user