mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 14:20:20 +00:00
[WIP] Privacy update
This commit is contained in:
@@ -84,6 +84,7 @@ public struct Namespaces {
|
||||
public static let CloudFeaturedBackgroundIconEmoji: Int32 = 26
|
||||
public static let CloudFeaturedChannelStatusEmoji: Int32 = 27
|
||||
public static let CloudDisabledChannelStatusEmoji: Int32 = 28
|
||||
public static let CloudDefaultTagReactions: Int32 = 29
|
||||
}
|
||||
|
||||
public struct CachedItemCollection {
|
||||
@@ -118,6 +119,7 @@ public struct Namespaces {
|
||||
public static let displayedMessageNotifications: Int8 = 32
|
||||
public static let recommendedChannels: Int8 = 33
|
||||
public static let peerColorOptions: Int8 = 34
|
||||
public static let savedMessageTags: Int8 = 35
|
||||
}
|
||||
|
||||
public struct UnorderedItemList {
|
||||
|
||||
@@ -195,6 +195,7 @@ public final class ReactionsMessageAttribute: Equatable, MessageAttribute {
|
||||
}
|
||||
|
||||
public let canViewList: Bool
|
||||
public let isTags: Bool
|
||||
public let reactions: [MessageReaction]
|
||||
public let recentPeers: [RecentPeer]
|
||||
|
||||
@@ -220,20 +221,23 @@ public final class ReactionsMessageAttribute: Equatable, MessageAttribute {
|
||||
return result
|
||||
}
|
||||
|
||||
public init(canViewList: Bool, reactions: [MessageReaction], recentPeers: [RecentPeer]) {
|
||||
public init(canViewList: Bool, isTags: Bool, reactions: [MessageReaction], recentPeers: [RecentPeer]) {
|
||||
self.canViewList = canViewList
|
||||
self.isTags = isTags
|
||||
self.reactions = reactions
|
||||
self.recentPeers = recentPeers
|
||||
}
|
||||
|
||||
required public init(decoder: PostboxDecoder) {
|
||||
self.canViewList = decoder.decodeBoolForKey("vl", orElse: true)
|
||||
self.isTags = decoder.decodeBoolForKey("tg", orElse: false)
|
||||
self.reactions = decoder.decodeObjectArrayWithDecoderForKey("r")
|
||||
self.recentPeers = decoder.decodeObjectArrayWithDecoderForKey("rp")
|
||||
}
|
||||
|
||||
public func encode(_ encoder: PostboxEncoder) {
|
||||
encoder.encodeBool(self.canViewList, forKey: "vl")
|
||||
encoder.encodeBool(self.isTags, forKey: "tg")
|
||||
encoder.encodeObjectArray(self.reactions, forKey: "r")
|
||||
encoder.encodeObjectArray(self.recentPeers, forKey: "rp")
|
||||
}
|
||||
@@ -242,6 +246,9 @@ public final class ReactionsMessageAttribute: Equatable, MessageAttribute {
|
||||
if lhs.canViewList != rhs.canViewList {
|
||||
return false
|
||||
}
|
||||
if lhs.isTags != rhs.isTags {
|
||||
return false
|
||||
}
|
||||
if lhs.reactions != rhs.reactions {
|
||||
return false
|
||||
}
|
||||
@@ -263,6 +270,7 @@ public final class ReactionsMessageAttribute: Equatable, MessageAttribute {
|
||||
public func withAllSeen() -> ReactionsMessageAttribute {
|
||||
return ReactionsMessageAttribute(
|
||||
canViewList: self.canViewList,
|
||||
isTags: self.isTags,
|
||||
reactions: self.reactions,
|
||||
recentPeers: self.recentPeers.map { recentPeer in
|
||||
var recentPeer = recentPeer
|
||||
|
||||
@@ -1,84 +1,85 @@
|
||||
import Postbox
|
||||
|
||||
public enum UserPresenceStatus: Comparable, PostboxCoding {
|
||||
private struct SortKey: Comparable {
|
||||
var major: Int
|
||||
var minor: Int32
|
||||
|
||||
init(major: Int, minor: Int32) {
|
||||
self.major = major
|
||||
self.minor = minor
|
||||
}
|
||||
|
||||
static func <(lhs: SortKey, rhs: SortKey) -> Bool {
|
||||
if lhs.major != rhs.major {
|
||||
return lhs.major < rhs.major
|
||||
}
|
||||
return lhs.minor < rhs.minor
|
||||
}
|
||||
}
|
||||
|
||||
case none
|
||||
case hidden
|
||||
case present(until: Int32)
|
||||
case recently
|
||||
case lastWeek
|
||||
case lastMonth
|
||||
|
||||
public static func <(lhs: UserPresenceStatus, rhs: UserPresenceStatus) -> Bool {
|
||||
switch lhs {
|
||||
case .none:
|
||||
switch rhs {
|
||||
case .none:
|
||||
return false
|
||||
case .lastMonth, .lastWeek, .recently, .present:
|
||||
return true
|
||||
}
|
||||
case let .present(until):
|
||||
switch rhs {
|
||||
case .none:
|
||||
return false
|
||||
case let .present(rhsUntil):
|
||||
return until < rhsUntil
|
||||
case .lastWeek, .lastMonth, .recently:
|
||||
return false
|
||||
}
|
||||
case .recently:
|
||||
switch rhs {
|
||||
case .none, .lastWeek, .lastMonth, .recently:
|
||||
return false
|
||||
case .present:
|
||||
return true
|
||||
}
|
||||
case .lastWeek:
|
||||
switch rhs {
|
||||
case .none, .lastMonth, .lastWeek:
|
||||
return false
|
||||
case .present, .recently:
|
||||
return true
|
||||
}
|
||||
case .lastMonth:
|
||||
switch rhs {
|
||||
case .none, .lastMonth:
|
||||
return false
|
||||
case .present, .recently, lastWeek:
|
||||
return true
|
||||
}
|
||||
private var sortKey: SortKey {
|
||||
switch self {
|
||||
case let .present(until):
|
||||
return SortKey(major: 1, minor: until)
|
||||
case .hidden:
|
||||
return SortKey(major: 2, minor: 0)
|
||||
case .recently:
|
||||
return SortKey(major: 3, minor: 0)
|
||||
case .lastWeek:
|
||||
return SortKey(major: 4, minor: 0)
|
||||
case .lastMonth:
|
||||
return SortKey(major: 5, minor: 0)
|
||||
case .none:
|
||||
return SortKey(major: 6, minor: 0)
|
||||
}
|
||||
}
|
||||
|
||||
public static func <(lhs: UserPresenceStatus, rhs: UserPresenceStatus) -> Bool {
|
||||
return lhs.sortKey < rhs.sortKey
|
||||
}
|
||||
|
||||
public init(decoder: PostboxDecoder) {
|
||||
switch decoder.decodeInt32ForKey("v", orElse: 0) {
|
||||
case 0:
|
||||
self = .none
|
||||
case 1:
|
||||
self = .present(until: decoder.decodeInt32ForKey("t", orElse: 0))
|
||||
case 2:
|
||||
self = .recently
|
||||
case 3:
|
||||
self = .lastWeek
|
||||
case 4:
|
||||
self = .lastMonth
|
||||
default:
|
||||
self = .none
|
||||
case 0:
|
||||
self = .none
|
||||
case 1:
|
||||
self = .present(until: decoder.decodeInt32ForKey("t", orElse: 0))
|
||||
case 2:
|
||||
self = .recently
|
||||
case 3:
|
||||
self = .lastWeek
|
||||
case 4:
|
||||
self = .lastMonth
|
||||
case 5:
|
||||
self = .hidden
|
||||
default:
|
||||
self = .none
|
||||
}
|
||||
}
|
||||
|
||||
public func encode(_ encoder: PostboxEncoder) {
|
||||
switch self {
|
||||
case .none:
|
||||
encoder.encodeInt32(0, forKey: "v")
|
||||
case let .present(timestamp):
|
||||
encoder.encodeInt32(1, forKey: "v")
|
||||
encoder.encodeInt32(timestamp, forKey: "t")
|
||||
case .recently:
|
||||
encoder.encodeInt32(2, forKey: "v")
|
||||
case .lastWeek:
|
||||
encoder.encodeInt32(3, forKey: "v")
|
||||
case .lastMonth:
|
||||
encoder.encodeInt32(4, forKey: "v")
|
||||
case .none:
|
||||
encoder.encodeInt32(0, forKey: "v")
|
||||
case let .present(timestamp):
|
||||
encoder.encodeInt32(1, forKey: "v")
|
||||
encoder.encodeInt32(timestamp, forKey: "t")
|
||||
case .recently:
|
||||
encoder.encodeInt32(2, forKey: "v")
|
||||
case .lastWeek:
|
||||
encoder.encodeInt32(3, forKey: "v")
|
||||
case .lastMonth:
|
||||
encoder.encodeInt32(4, forKey: "v")
|
||||
case .hidden:
|
||||
encoder.encodeInt32(5, forKey: "v")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user