From: AsamK Date: Tue, 30 Jan 2024 16:21:29 +0000 (+0100) Subject: Clean old prekeys only after server message queue is empty X-Git-Tag: v0.13.0~37 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/080c14d111dbb5ad1c070828116ed6b778f7aa4d Clean old prekeys only after server message queue is empty --- diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/PreKeyHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/PreKeyHelper.java index e8ef3fd6..6dd579c6 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/PreKeyHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/PreKeyHelper.java @@ -118,8 +118,15 @@ public class PreKeyHelper { logger.warn("Failed to updated pre keys: {}", e.getMessage()); } } + } + + public void cleanOldPreKeys() { + cleanOldPreKeys(ServiceIdType.ACI); + cleanOldPreKeys(ServiceIdType.PNI); + } - cleanSignedPreKeys((serviceIdType)); + private void cleanOldPreKeys(final ServiceIdType serviceIdType) { + cleanSignedPreKeys(serviceIdType); cleanOneTimePreKeys(serviceIdType); } diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/ReceiveHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/ReceiveHelper.java index 713ca5d7..a66d6ff6 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/ReceiveHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/ReceiveHelper.java @@ -5,6 +5,7 @@ import org.asamk.signal.manager.actions.HandleAction; import org.asamk.signal.manager.api.ReceiveConfig; import org.asamk.signal.manager.api.UntrustedIdentityException; import org.asamk.signal.manager.internal.SignalDependencies; +import org.asamk.signal.manager.jobs.CleanOldPreKeysJob; import org.asamk.signal.manager.storage.SignalAccount; import org.asamk.signal.manager.storage.messageCache.CachedMessage; import org.asamk.signal.manager.storage.recipients.RecipientAddress; @@ -176,6 +177,7 @@ public class ReceiveHelper { handleQueuedActions(queuedActions.keySet()); queuedActions.clear(); + context.getJobExecutor().enqueueJob(new CleanOldPreKeysJob()); hasCaughtUpWithOldMessages = true; caughtUpWithOldMessagesListener.call(); diff --git a/lib/src/main/java/org/asamk/signal/manager/jobs/CleanOldPreKeysJob.java b/lib/src/main/java/org/asamk/signal/manager/jobs/CleanOldPreKeysJob.java new file mode 100644 index 00000000..d933fb0f --- /dev/null +++ b/lib/src/main/java/org/asamk/signal/manager/jobs/CleanOldPreKeysJob.java @@ -0,0 +1,16 @@ +package org.asamk.signal.manager.jobs; + +import org.asamk.signal.manager.helper.Context; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class CleanOldPreKeysJob implements Job { + + private static final Logger logger = LoggerFactory.getLogger(CleanOldPreKeysJob.class); + + @Override + public void run(Context context) { + logger.trace("Cleaning old prekeys"); + context.getPreKeyHelper().cleanOldPreKeys(); + } +}