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()); } } + } - cleanSignedPreKeys((serviceIdType)); + public void cleanOldPreKeys() { + cleanOldPreKeys(ServiceIdType.ACI); + cleanOldPreKeys(ServiceIdType.PNI); + } + + 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(); + } +}