WIP: persist reaction locally

This commit is contained in:
ryanzhao 2022-08-03 09:58:13 +10:00
parent a742e97d00
commit 19a1edb33a

View file

@ -302,6 +302,19 @@ public extension Message {
throw MessageReceiverError.invalidMessage
}
if let reactions = message.reactions {
try processRawReceivedReactions(
db,
reactions: reactions,
serverExpirationTimestamp: nil,
serverHash: nil,
openGroupId: openGroupId,
openGroupMessageServerId: message.id,
openGroupServerPublicKey: openGroupServerPublicKey,
dependencies: dependencies
)
}
return try processRawReceivedMessage(
db,
envelope: envelope,
@ -348,6 +361,34 @@ public extension Message {
)
}
private static func processRawReceivedReactions(
_ db: Database,
reactions: [String:OpenGroupAPI.Message.Reaction],
serverExpirationTimestamp: TimeInterval?,
serverHash: String?,
openGroupId: String? = nil,
openGroupMessageServerId: Int64? = nil,
openGroupServerPublicKey: String? = nil,
dependencies: SMKDependencies = SMKDependencies()
) throws {
guard let openGroupMessageServerId = openGroupMessageServerId else { return }
for (encodedEmoji, rawReaction) in reactions {
if let emoji = encodedEmoji.removingPercentEncoding,
rawReaction.count > 0,
let reactors = rawReaction.reactors?.joined(separator: ",")
{
try Reaction(
interactionId: openGroupMessageServerId,
serverHash: nil,
timestampMs: Int64(floor((Date().timeIntervalSince1970 * 1000))),
authorId: reactors,
emoji: emoji,
count: rawReaction.count
).insert(db)
}
}
}
private static func processRawReceivedMessage(
_ db: Database,
envelope: SNProtoEnvelope,