diff --git a/SessionMessagingKit/Open Groups/OpenGroupAPIV2.swift b/SessionMessagingKit/Open Groups/OpenGroupAPIV2.swift index e7ccbfd58..600b6545f 100644 --- a/SessionMessagingKit/Open Groups/OpenGroupAPIV2.swift +++ b/SessionMessagingKit/Open Groups/OpenGroupAPIV2.swift @@ -4,18 +4,17 @@ import SessionSnodeKit @objc(SNOpenGroupAPIV2) public final class OpenGroupAPIV2 : NSObject { private static var authTokenPromises: [String:Promise] = [:] + private static var hasPerformedInitialPoll: [String:Bool] = [:] + private static var hasUpdatedLastOpenDate = false public static let workQueue = DispatchQueue(label: "OpenGroupAPIV2.workQueue", qos: .userInitiated) // It's important that this is a serial queue public static var moderators: [String:[String:Set]] = [:] // Server URL to room ID to set of moderator IDs public static var defaultRoomsPromise: Promise<[Info]>? public static var groupImagePromises: [String:Promise] = [:] - - private static var hasPerformedInitialPoll: [String:Bool] = [:] - private static var hasUpdatedLastOpenDate = false - static var timeSinceLastOpen:Double = { - let lastOpenDate = UserDefaults.standard[.lastOpenDate] - let now = Double(NSDate.millisecondTimestamp()) - return now - lastOpenDate + private static let timeSinceLastOpen: TimeInterval = { + guard let lastOpen = UserDefaults.standard[.lastOpen] else { return .greatestFiniteMagnitude } + let now = Date() + return now.timeIntervalSince(lastOpen) }() // MARK: Settings @@ -153,21 +152,20 @@ public final class OpenGroupAPIV2 : NSObject { let rooms = storage.getAllV2OpenGroups().values.filter { $0.server == server }.map { $0.room } var body: [JSON] = [] var authTokenPromises: [String:Promise] = [:] - let timeSinceLastOpen = self.timeSinceLastOpen - let useMessageLimit = (!(hasPerformedInitialPoll[server] ?? false) && timeSinceLastOpen > OpenGroupPollerV2.maxInactivityPeriod) + let useMessageLimit = (hasPerformedInitialPoll[server] != true && timeSinceLastOpen > OpenGroupPollerV2.maxInactivityPeriod) hasPerformedInitialPoll[server] = true - if(!hasUpdatedLastOpenDate) { - UserDefaults.standard[.lastOpenDate] = Double(NSDate.millisecondTimestamp()) + if !hasUpdatedLastOpenDate { + UserDefaults.standard[.lastOpen] = Date() hasUpdatedLastOpenDate = true } for room in rooms { authTokenPromises[room] = getAuthToken(for: room, on: server) var json: JSON = [ "room_id" : room ] if let lastMessageServerID = storage.getLastMessageServerID(for: room, on: server) { - json["from_message_server_id"] = (useMessageLimit) ? nil : lastMessageServerID + json["from_message_server_id"] = useMessageLimit ? nil : lastMessageServerID } if let lastDeletionServerID = storage.getLastDeletionServerID(for: room, on: server) { - json["from_deletion_server_id"] = (useMessageLimit) ? nil : lastDeletionServerID + json["from_deletion_server_id"] = useMessageLimit ? nil : lastDeletionServerID } body.append(json) } diff --git a/SessionMessagingKit/Sending & Receiving/Pollers/OpenGroupPollerV2.swift b/SessionMessagingKit/Sending & Receiving/Pollers/OpenGroupPollerV2.swift index 20213de7b..a1975197b 100644 --- a/SessionMessagingKit/Sending & Receiving/Pollers/OpenGroupPollerV2.swift +++ b/SessionMessagingKit/Sending & Receiving/Pollers/OpenGroupPollerV2.swift @@ -9,7 +9,7 @@ public final class OpenGroupPollerV2 : NSObject { // MARK: Settings private let pollInterval: TimeInterval = 4 - static let maxInactivityPeriod: Double = 14 * 24 * 60 * 60 * 1000 + static let maxInactivityPeriod: Double = 14 * 24 * 60 * 60 // MARK: Lifecycle public init(for server: String) { diff --git a/SessionUtilitiesKit/General/SNUserDefaults.swift b/SessionUtilitiesKit/General/SNUserDefaults.swift index b5cf48718..8a0fad35b 100644 --- a/SessionUtilitiesKit/General/SNUserDefaults.swift +++ b/SessionUtilitiesKit/General/SNUserDefaults.swift @@ -14,11 +14,11 @@ public enum SNUserDefaults { case lastDisplayNameUpdate case lastProfilePictureUpdate case lastOpenGroupImageUpdate + case lastOpen } public enum Double : Swift.String { case lastDeviceTokenUpload = "lastDeviceTokenUploadTime" - case lastOpenDate } public enum Int : Swift.String {