Swiftgram/submodules/TelegramCore/TelegramCore/ManagedNotificationSettingsBehaviors.swift
Peter 5c1613d104 Add 'submodules/TelegramCore/' from commit '9561227540acef69894e6546395ab223a6233600'
git-subtree-dir: submodules/TelegramCore
git-subtree-mainline: 971273e8f8f49a47f14b251d2f35e3445a61fc3f
git-subtree-split: 9561227540acef69894e6546395ab223a6233600
2019-06-11 18:59:08 +01:00

40 lines
1.7 KiB
Swift

import Foundation
#if os(macOS)
import PostboxMac
import SwiftSignalKitMac
#else
import Postbox
import SwiftSignalKit
#endif
func managedNotificationSettingsBehaviors(postbox: Postbox) -> Signal<Never, NoError> {
return postbox.combinedView(keys: [.peerNotificationSettingsBehaviorTimestampView])
|> mapToSignal { views -> Signal<Never, NoError> in
guard let view = views.views[.peerNotificationSettingsBehaviorTimestampView] as? PeerNotificationSettingsBehaviorTimestampView else {
return .complete()
}
guard let earliestTimestamp = view.earliestTimestamp else {
return .complete()
}
let checkSignal = postbox.transaction { transaction -> Void in
let timestamp = Int32(CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970)
for (peerId, notificationSettings) in transaction.getPeerIdsAndNotificationSettingsWithBehaviorTimestampLessThanOrEqualTo(timestamp) {
if let notificationSettings = notificationSettings as? TelegramPeerNotificationSettings {
if case let .muted(untilTimestamp) = notificationSettings.muteState, untilTimestamp <= timestamp {
transaction.updateCurrentPeerNotificationSettings([peerId: notificationSettings.withUpdatedMuteState(.unmuted)])
}
}
}
}
|> ignoreValues
let timeout = earliestTimestamp - Int32(CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970)
if timeout <= 0 {
return checkSignal
} else {
return checkSignal |> delay(Double(timeout), queue: .mainQueue())
}
}
}