mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 06:35:51 +00:00
Refactoring
This commit is contained in:
44
submodules/TelegramCore/Sources/State/AppChangelog.swift
Normal file
44
submodules/TelegramCore/Sources/State/AppChangelog.swift
Normal file
@@ -0,0 +1,44 @@
|
||||
import Foundation
|
||||
import Postbox
|
||||
import SwiftSignalKit
|
||||
import MtProtoKit
|
||||
import TelegramApi
|
||||
|
||||
import SyncCore
|
||||
|
||||
func managedAppChangelog(postbox: Postbox, network: Network, stateManager: AccountStateManager, appVersion: String) -> Signal<Void, NoError> {
|
||||
return stateManager.pollStateUpdateCompletion()
|
||||
|> take(1)
|
||||
|> mapToSignal { _ -> Signal<Void, NoError> in
|
||||
return postbox.transaction { transaction -> AppChangelogState in
|
||||
return transaction.getPreferencesEntry(key: PreferencesKeys.appChangelogState) as? AppChangelogState ?? AppChangelogState.default
|
||||
}
|
||||
|> mapToSignal { appChangelogState -> Signal<Void, NoError> in
|
||||
let appChangelogState = appChangelogState
|
||||
if appChangelogState.checkedVersion == appVersion {
|
||||
return .complete()
|
||||
}
|
||||
let previousVersion = appChangelogState.previousVersion
|
||||
return network.request(Api.functions.help.getAppChangelog(prevAppVersion: previousVersion))
|
||||
|> map(Optional.init)
|
||||
|> `catch` { _ -> Signal<Api.Updates?, NoError> in
|
||||
return .single(nil)
|
||||
}
|
||||
|> mapToSignal { updates -> Signal<Void, NoError> in
|
||||
if let updates = updates {
|
||||
stateManager.addUpdates(updates)
|
||||
}
|
||||
|
||||
return postbox.transaction { transaction in
|
||||
updateAppChangelogState(transaction: transaction, { state in
|
||||
var state = state
|
||||
state.checkedVersion = appVersion
|
||||
state.previousVersion = appVersion
|
||||
return state
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user