[WIP] Privacy update

This commit is contained in:
Isaac
2024-01-05 10:55:59 +04:00
parent f27952b7c2
commit fb517e49c9
68 changed files with 4913 additions and 3974 deletions

View File

@@ -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 {

View File

@@ -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

View File

@@ -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")
}
}
}