]> nmode's Git Repositories - signal-cli/commitdiff
Clean old prekeys only after server message queue is empty
authorAsamK <asamk@gmx.de>
Tue, 30 Jan 2024 16:21:29 +0000 (17:21 +0100)
committerAsamK <asamk@gmx.de>
Tue, 30 Jan 2024 16:21:29 +0000 (17:21 +0100)
lib/src/main/java/org/asamk/signal/manager/helper/PreKeyHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/ReceiveHelper.java
lib/src/main/java/org/asamk/signal/manager/jobs/CleanOldPreKeysJob.java [new file with mode: 0644]

index e8ef3fd60c0bac8396fea9e58647e8b9560a40c8..6dd579c6a7b024c773efd42a0ced45c07b0732e0 100644 (file)
@@ -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);
     }
 
index 713ca5d744aed1af492316610fa75f0abfe99429..a66d6ff621850eec748ad9bbdd59613ef3850492 100644 (file)
@@ -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 (file)
index 0000000..d933fb0
--- /dev/null
@@ -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();
+    }
+}