From 30e48209e2a6b689e945e35bb8a4f63f073d861a Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Wed, 3 Aug 2022 16:40:29 +1000 Subject: [PATCH] feat: persist open group reactions into local database --- SessionMessagingKit/Database/Models/Reaction.swift | 13 +++++++++++++ .../Open Groups/OpenGroupManager.swift | 1 + .../MessageReceiver+VisibleMessages.swift | 5 +++++ .../Sending & Receiving/MessageReceiver.swift | 2 ++ 4 files changed, 21 insertions(+) diff --git a/SessionMessagingKit/Database/Models/Reaction.swift b/SessionMessagingKit/Database/Models/Reaction.swift index e045a42e8..08f4965c9 100644 --- a/SessionMessagingKit/Database/Models/Reaction.swift +++ b/SessionMessagingKit/Database/Models/Reaction.swift @@ -90,4 +90,17 @@ public extension Reaction { count: (count ?? self.count) ) } + + func with( + interactionId: Int64? + ) -> Reaction { + return Reaction( + interactionId: (interactionId ?? self.interactionId), + serverHash: self.serverHash, + timestampMs: self.timestampMs, + authorId: self.authorId, + emoji: self.emoji, + count: self.count + ) + } } diff --git a/SessionMessagingKit/Open Groups/OpenGroupManager.swift b/SessionMessagingKit/Open Groups/OpenGroupManager.swift index c72dea525..a97b84fdd 100644 --- a/SessionMessagingKit/Open Groups/OpenGroupManager.swift +++ b/SessionMessagingKit/Open Groups/OpenGroupManager.swift @@ -537,6 +537,7 @@ public final class OpenGroupManager: NSObject { message: messageInfo.message, associatedWithProto: try SNProtoContent.parseData(messageInfo.serializedProtoData), openGroupId: openGroup.id, + openGroupReactions: messageInfo.reactions, isBackgroundPoll: isBackgroundPoll, dependencies: dependencies ) diff --git a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+VisibleMessages.swift b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+VisibleMessages.swift index b1055223e..f92ce527b 100644 --- a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+VisibleMessages.swift +++ b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+VisibleMessages.swift @@ -12,6 +12,7 @@ extension MessageReceiver { message: VisibleMessage, associatedWithProto proto: SNProtoContent, openGroupId: String?, + openGroupReactions: [Reaction] = [], isBackgroundPoll: Bool, dependencies: Dependencies = Dependencies() ) throws -> Int64 { @@ -140,6 +141,10 @@ extension MessageReceiver { return recipientParts[2] }() ).inserted(db) + + for reaction in openGroupReactions { + try reaction.with(interactionId: interaction.id).insert(db) + } } catch { switch error { diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift index 4524b75d2..e97b4544d 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift @@ -180,6 +180,7 @@ public enum MessageReceiver { message: Message, associatedWithProto proto: SNProtoContent, openGroupId: String?, + openGroupReactions: [Reaction] = [], isBackgroundPoll: Bool, dependencies: SMKDependencies = SMKDependencies() ) throws { @@ -217,6 +218,7 @@ public enum MessageReceiver { message: message, associatedWithProto: proto, openGroupId: openGroupId, + openGroupReactions: openGroupReactions, isBackgroundPoll: isBackgroundPoll )