From b090227a2dcb054ef6b4496b065b0a67c3838939 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Fri, 11 Jun 2021 11:01:08 +1000 Subject: [PATCH] Fix potential crash & apply code convention --- .../Control Messages/ClosedGroupControlMessage.swift | 4 ++-- .../Sending & Receiving/MessageReceiver+Handling.swift | 10 ++++------ .../MessageSender+ClosedGroups.swift | 1 - 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/SessionMessagingKit/Messages/Control Messages/ClosedGroupControlMessage.swift b/SessionMessagingKit/Messages/Control Messages/ClosedGroupControlMessage.swift index 61fe80290..4b499790d 100644 --- a/SessionMessagingKit/Messages/Control Messages/ClosedGroupControlMessage.swift +++ b/SessionMessagingKit/Messages/Control Messages/ClosedGroupControlMessage.swift @@ -112,7 +112,7 @@ public final class ClosedGroupControlMessage : ControlMessage { let encryptionKeyPair = coder.decodeObject(forKey: "encryptionKeyPair") as? ECKeyPair, let members = coder.decodeObject(forKey: "members") as? [Data], let admins = coder.decodeObject(forKey: "admins") as? [Data] else { return nil } - let expireTimer = coder.decodeObject(forKey: "expireTimer") as! UInt32 + let expireTimer = coder.decodeObject(forKey: "expireTimer") as? UInt32 ?? 0 self.kind = .new(publicKey: publicKey, name: name, encryptionKeyPair: encryptionKeyPair, members: members, admins: admins, expireTimer: expireTimer) case "encryptionKeyPair": let publicKey = coder.decodeObject(forKey: "publicKey") as? Data @@ -179,7 +179,7 @@ public final class ClosedGroupControlMessage : ControlMessage { let expireTimer = closedGroupControlMessageProto.expireTimer let encryptionKeyPair = try ECKeyPair(publicKeyData: encryptionKeyPairAsProto.publicKey.removing05PrefixIfNeeded(), privateKeyData: encryptionKeyPairAsProto.privateKey) kind = .new(publicKey: publicKey, name: name, encryptionKeyPair: encryptionKeyPair, - members: closedGroupControlMessageProto.members, admins: closedGroupControlMessageProto.admins, expireTimer: expireTimer) + members: closedGroupControlMessageProto.members, admins: closedGroupControlMessageProto.admins, expireTimer: expireTimer) } catch { SNLog("Couldn't parse key pair.") return nil diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift index 8b8c79935..342d5ed58 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift @@ -397,12 +397,10 @@ extension MessageReceiver { let infoMessage = TSInfoMessage(timestamp: messageSentTimestamp, in: thread, messageType: .groupCreated) infoMessage.save(with: transaction) } - var configuration: OWSDisappearingMessagesConfiguration - if (expireTimer > 0) { - configuration = OWSDisappearingMessagesConfiguration(threadId: thread.uniqueId!, enabled: true, durationSeconds: expireTimer) - } else { - configuration = OWSDisappearingMessagesConfiguration(threadId: thread.uniqueId!, enabled: false, durationSeconds: 24 * 60 * 60) - } + let isExpirationTimerEnabled = (expireTimer > 0) + let expirationTimerDuration = (isExpirationTimerEnabled ? expireTimer : 24 * 60 * 60) + let configuration = OWSDisappearingMessagesConfiguration(threadId: thread.uniqueId!, enabled: isExpirationTimerEnabled, + durationSeconds: expirationTimerDuration) configuration.save(with: transaction) // Add the group to the user's set of public keys to poll for Storage.shared.addClosedGroupPublicKey(groupPublicKey, using: transaction) diff --git a/SessionMessagingKit/Sending & Receiving/MessageSender+ClosedGroups.swift b/SessionMessagingKit/Sending & Receiving/MessageSender+ClosedGroups.swift index acc9a0ce9..8209fcbdb 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageSender+ClosedGroups.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageSender+ClosedGroups.swift @@ -163,7 +163,6 @@ extension MessageSender { let members = [String](Set(group.groupMemberIds).union(newMembers)) let membersAsData = members.map { Data(hex: $0) } let adminsAsData = group.groupAdminIds.map { Data(hex: $0) } - // Get expiration timer value for the group let expireTimer = thread.disappearingMessagesDuration(with: transaction) guard let encryptionKeyPair = Storage.shared.getLatestClosedGroupEncryptionKeyPair(for: groupPublicKey) else { SNLog("Couldn't find encryption key pair for closed group: \(groupPublicKey).")