]> nmode's Git Repositories - signal-cli/commitdiff
Add CDSI recipients refresh job
authorAsamK <asamk@gmx.de>
Sun, 28 Jan 2024 21:37:53 +0000 (22:37 +0100)
committerAsamK <asamk@gmx.de>
Sun, 28 Jan 2024 22:04:34 +0000 (23:04 +0100)
lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java
lib/src/main/java/org/asamk/signal/manager/jobs/RefreshRecipientsJob.java [new file with mode: 0644]
lib/src/main/java/org/asamk/signal/manager/syncStorage/ContactRecordProcessor.java

index 75dcb138d44664b3e3d4d81d41d0d59edd07480e..9814d95c8b5f0ca31c464e338e9404276df207bd 100644 (file)
@@ -66,6 +66,7 @@ import org.asamk.signal.manager.config.ServiceEnvironmentConfig;
 import org.asamk.signal.manager.helper.AccountFileUpdater;
 import org.asamk.signal.manager.helper.Context;
 import org.asamk.signal.manager.helper.RecipientHelper.RegisteredUser;
+import org.asamk.signal.manager.jobs.RefreshRecipientsJob;
 import org.asamk.signal.manager.jobs.SyncStorageJob;
 import org.asamk.signal.manager.storage.AttachmentStore;
 import org.asamk.signal.manager.storage.AvatarStore;
@@ -226,14 +227,7 @@ public class ManagerImpl implements Manager {
         final var lastRecipientsRefresh = account.getLastRecipientsRefresh();
         if (lastRecipientsRefresh == null
                 || lastRecipientsRefresh < System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1)) {
-            try {
-                context.getRecipientHelper().refreshUsers();
-            } catch (Exception e) {
-                logger.warn("Full CDSI recipients refresh failed, ignoring: {} ({})",
-                        e.getMessage(),
-                        e.getClass().getSimpleName());
-                logger.debug("Full CDSI refresh failed", e);
-            }
+            context.getJobExecutor().enqueueJob(new RefreshRecipientsJob());
             context.getAccountHelper().checkWhoAmiI();
         }
     }
diff --git a/lib/src/main/java/org/asamk/signal/manager/jobs/RefreshRecipientsJob.java b/lib/src/main/java/org/asamk/signal/manager/jobs/RefreshRecipientsJob.java
new file mode 100644 (file)
index 0000000..472bbac
--- /dev/null
@@ -0,0 +1,23 @@
+package org.asamk.signal.manager.jobs;
+
+import org.asamk.signal.manager.helper.Context;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RefreshRecipientsJob implements Job {
+
+    private static final Logger logger = LoggerFactory.getLogger(RefreshRecipientsJob.class);
+
+    @Override
+    public void run(Context context) {
+        logger.trace("Full CDSI recipients refresh");
+        try {
+            context.getRecipientHelper().refreshUsers();
+        } catch (Exception e) {
+            logger.warn("Full CDSI recipients refresh failed, ignoring: {} ({})",
+                    e.getMessage(),
+                    e.getClass().getSimpleName());
+            logger.debug("Full CDSI refresh failed", e);
+        }
+    }
+}
index b79cb957500667584a34b33ef3554716ed5c412e..7598b5ea57d2b1d1ea30567169eecd79036f7e05 100644 (file)
@@ -4,6 +4,7 @@ import org.asamk.signal.manager.api.Contact;
 import org.asamk.signal.manager.api.Profile;
 import org.asamk.signal.manager.internal.JobExecutor;
 import org.asamk.signal.manager.jobs.DownloadProfileJob;
+import org.asamk.signal.manager.jobs.RefreshRecipientsJob;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.storage.recipients.RecipientAddress;
 import org.asamk.signal.manager.util.KeyUtils;
@@ -152,7 +153,7 @@ public class ContactRecordProcessor extends DefaultStorageRecordProcessor<Signal
             } else if (pnisMatchButE164sDont) {
                 logger.debug("Matching PNIs, but the E164s differ! Trusting our local pair.");
             }
-            // TODO [pnp] Schedule CDS fetch?
+            jobExecutor.enqueueJob(new RefreshRecipientsJob());
             pni = local.getPni().get();
             e164 = local.getNumber().get();
         } else {