mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00

Added ability to download music without streaming Added progress indicators for various blocking tasks Fixed image gallery swipe to dismiss after zooming Added online member count indication in supergroups Fixed contact statuses in contact search
76 lines
3.5 KiB
Swift
76 lines
3.5 KiB
Swift
import Foundation
|
|
import Postbox
|
|
import SwiftSignalKit
|
|
|
|
public enum TotalUnreadCountDisplayStyle: Int32 {
|
|
case filtered = 0
|
|
case raw = 1
|
|
}
|
|
|
|
public enum TotalUnreadCountDisplayCategory: Int32 {
|
|
case chats = 0
|
|
case messages = 1
|
|
}
|
|
|
|
public struct InAppNotificationSettings: PreferencesEntry, Equatable {
|
|
public var playSounds: Bool
|
|
public var vibrate: Bool
|
|
public var displayPreviews: Bool
|
|
public var totalUnreadCountDisplayStyle: TotalUnreadCountDisplayStyle
|
|
public var totalUnreadCountDisplayCategory: TotalUnreadCountDisplayCategory
|
|
public var displayNameOnLockscreen: Bool
|
|
|
|
public static var defaultSettings: InAppNotificationSettings {
|
|
return InAppNotificationSettings(playSounds: true, vibrate: false, displayPreviews: true, totalUnreadCountDisplayStyle: .filtered, totalUnreadCountDisplayCategory: .chats, displayNameOnLockscreen: true)
|
|
}
|
|
|
|
init(playSounds: Bool, vibrate: Bool, displayPreviews: Bool, totalUnreadCountDisplayStyle: TotalUnreadCountDisplayStyle, totalUnreadCountDisplayCategory: TotalUnreadCountDisplayCategory, displayNameOnLockscreen: Bool) {
|
|
self.playSounds = playSounds
|
|
self.vibrate = vibrate
|
|
self.displayPreviews = displayPreviews
|
|
self.totalUnreadCountDisplayStyle = totalUnreadCountDisplayStyle
|
|
self.totalUnreadCountDisplayCategory = totalUnreadCountDisplayCategory
|
|
self.displayNameOnLockscreen = displayNameOnLockscreen
|
|
}
|
|
|
|
public init(decoder: PostboxDecoder) {
|
|
self.playSounds = decoder.decodeInt32ForKey("s", orElse: 0) != 0
|
|
self.vibrate = decoder.decodeInt32ForKey("v", orElse: 0) != 0
|
|
self.displayPreviews = decoder.decodeInt32ForKey("p", orElse: 0) != 0
|
|
self.totalUnreadCountDisplayStyle = TotalUnreadCountDisplayStyle(rawValue: decoder.decodeInt32ForKey("tds", orElse: 0)) ?? .filtered
|
|
self.totalUnreadCountDisplayCategory = TotalUnreadCountDisplayCategory(rawValue: decoder.decodeInt32ForKey("totalUnreadCountDisplayCategory", orElse: 0)) ?? .messages
|
|
self.displayNameOnLockscreen = decoder.decodeInt32ForKey("displayNameOnLockscreen", orElse: 1) != 0
|
|
}
|
|
|
|
public func encode(_ encoder: PostboxEncoder) {
|
|
encoder.encodeInt32(self.playSounds ? 1 : 0, forKey: "s")
|
|
encoder.encodeInt32(self.vibrate ? 1 : 0, forKey: "v")
|
|
encoder.encodeInt32(self.displayPreviews ? 1 : 0, forKey: "p")
|
|
encoder.encodeInt32(self.totalUnreadCountDisplayStyle.rawValue, forKey: "tds")
|
|
encoder.encodeInt32(self.totalUnreadCountDisplayCategory.rawValue, forKey: "totalUnreadCountDisplayCategory")
|
|
encoder.encodeInt32(self.displayNameOnLockscreen ? 1 : 0, forKey: "displayNameOnLockscreen")
|
|
}
|
|
|
|
public func isEqual(to: PreferencesEntry) -> Bool {
|
|
if let to = to as? InAppNotificationSettings {
|
|
return self == to
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
|
|
func updateInAppNotificationSettingsInteractively(postbox: Postbox, _ f: @escaping (InAppNotificationSettings) -> InAppNotificationSettings) -> Signal<Void, NoError> {
|
|
return postbox.transaction { transaction -> Void in
|
|
transaction.updatePreferencesEntry(key: ApplicationSpecificPreferencesKeys.inAppNotificationSettings, { entry in
|
|
let currentSettings: InAppNotificationSettings
|
|
if let entry = entry as? InAppNotificationSettings {
|
|
currentSettings = entry
|
|
} else {
|
|
currentSettings = InAppNotificationSettings.defaultSettings
|
|
}
|
|
return f(currentSettings)
|
|
})
|
|
}
|
|
}
|