This commit is contained in:
Ali
2023-07-14 23:31:21 +04:00
parent c2d2da131c
commit 2e09bfe14f
9 changed files with 222 additions and 47 deletions

View File

@@ -25,6 +25,10 @@ public extension TelegramEngine {
return _internal_requestAccountPrivacySettings(account: self.account)
}
public func updateGlobalPrivacySettings() -> Signal<Never, NoError> {
return _internal_updateGlobalPrivacySettings(account: self.account)
}
public func updateAccountAutoArchiveChats(value: Bool) -> Signal<Never, NoError> {
return _internal_updateAccountAutoArchiveChats(account: self.account, value: value)
}

View File

@@ -3,6 +3,36 @@ import Postbox
import TelegramApi
import SwiftSignalKit
func _internal_updateGlobalPrivacySettings(account: Account) -> Signal<Never, NoError> {
return account.network.request(Api.functions.account.getGlobalPrivacySettings())
|> map(Optional.init)
|> `catch` { _ -> Signal<Api.GlobalPrivacySettings?, NoError> in
return .single(nil)
}
|> mapToSignal { result -> Signal<Never, NoError> in
return account.postbox.transaction { transaction -> Void in
guard let result = result else {
return
}
let globalSettings: GlobalPrivacySettings
switch result {
case let .globalPrivacySettings(flags):
let automaticallyArchiveAndMuteNonContacts = (flags & (1 << 0)) != 0
let keepArchivedUnmuted = (flags & (1 << 1)) != 0
let keepArchivedFolders = (flags & (1 << 2)) != 0
globalSettings = GlobalPrivacySettings(
automaticallyArchiveAndMuteNonContacts: automaticallyArchiveAndMuteNonContacts,
keepArchivedUnmuted: keepArchivedUnmuted,
keepArchivedFolders: keepArchivedFolders
)
}
updateGlobalPrivacySettings(transaction: transaction, { _ in
return globalSettings
})
}
|> ignoreValues
}
}
func _internal_requestAccountPrivacySettings(account: Account) -> Signal<AccountPrivacySettings, NoError> {
let lastSeenPrivacy = account.network.request(Api.functions.account.getPrivacy(key: .inputPrivacyKeyStatusTimestamp))