sync expiries message handling

pull/941/head
ryanzhao 2 years ago
parent 89a5739883
commit 723d676d81

@ -94,7 +94,7 @@ public extension DisappearingMessagesJob {
let serverHashes = interactions.compactMap { $0.serverHash }
guard let expiresInSeconds = expiresInSeconds, !serverHashes.isEmpty else { return }
let expirationTimestamp: Int64 = Int64(ceil(startedAtMs + expiresInSeconds))
let expirationTimestamp: Int64 = Int64(ceil(startedAtMs + expiresInSeconds * 1000))
let userPublicKey: String = getUserHexEncodedPublicKey(db)
let threadId: String = interactions[0].threadId

@ -36,6 +36,8 @@ public final class SyncedExpiriesMessage: ControlMessage {
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container: KeyedEncodingContainer<CodingKeys> = encoder.container(keyedBy: CodingKeys.self)
try container.encode(conversationExpiries, forKey: .conversationExpiries)

@ -11,6 +11,21 @@ extension MessageReceiver {
message: SyncedExpiriesMessage,
dependencies: SMKDependencies
) throws {
print("Ryan Test: Receive SyncedExpiriesMessage")
let userPublicKey: String = getUserHexEncodedPublicKey(db, dependencies: dependencies)
guard userPublicKey == message.sender else { return }
message.conversationExpiries.forEach { (syncTarget, expiries) in
guard let disappearingMessageConfiguration = try? DisappearingMessagesConfiguration.fetchOne(db, id: syncTarget) else { return }
expiries.forEach { syncExpiry in
let startedAtMs: Double = Double(syncExpiry.expirationTimestamp) - disappearingMessageConfiguration.durationSeconds * 1000
let changeCount: Int? = try? Interaction
.filter(
Interaction.Columns.threadId == syncTarget &&
Interaction.Columns.serverHash == syncExpiry.serverHash
)
.updateAll(db, Interaction.Columns.expiresStartedAtMs.set(to: startedAtMs))
}
}
}
}

Loading…
Cancel
Save