From 00e468fccedffd045f4eedfb39740b7a87df908f Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Wed, 24 May 2023 10:17:43 +1000 Subject: [PATCH] implement the new approach to sync disappearing after read status across devices --- .../Jobs/Types/DisappearingMessagesJob.swift | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/SessionMessagingKit/Jobs/Types/DisappearingMessagesJob.swift b/SessionMessagingKit/Jobs/Types/DisappearingMessagesJob.swift index fe48c65f9..fed66db5b 100644 --- a/SessionMessagingKit/Jobs/Types/DisappearingMessagesJob.swift +++ b/SessionMessagingKit/Jobs/Types/DisappearingMessagesJob.swift @@ -105,20 +105,22 @@ public extension DisappearingMessagesJob { of: messageHashes ) } - .map { response in - Storage.shared.writeAsync { db in - try response.1.expiries.forEach { hash, exipreAtMs in - let expiresInSeconds: TimeInterval = TimeInterval((exipreAtMs - UInt64(lastReadTimestampMs)) / 1000) - - _ = try Interaction - .filter(Interaction.Columns.serverHash == hash) - .updateAll( - db, - Interaction.Columns.expiresInSeconds.set(to: expiresInSeconds) - ) + .sinkUntilComplete ( + receiveValue: { response in + Storage.shared.writeAsync { db in + try response.1.expiries.forEach { hash, exipreAtMs in + let expiresInSeconds: TimeInterval = TimeInterval((exipreAtMs - UInt64(lastReadTimestampMs)) / 1000) + + _ = try Interaction + .filter(Interaction.Columns.serverHash == hash) + .updateAll( + db, + Interaction.Columns.expiresInSeconds.set(to: expiresInSeconds) + ) + } } } - } + ) return updateNextRunIfNeeded(db) }