import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.ReentrantLock;
import java.util.function.Function;
public void checkAccountState() throws IOException {
context.getAccountHelper().checkAccountState();
+ 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);
+ }
+ }
}
@Override
long.class,
0L);
private final KeyValueEntry<byte[]> cdsiToken = new KeyValueEntry<>("cdsi-token", byte[].class);
+ private final KeyValueEntry<Long> lastRecipientsRefresh = new KeyValueEntry<>("last-recipients-refresh",
+ long.class);
private final KeyValueEntry<Long> storageManifestVersion = new KeyValueEntry<>("storage-manifest-version",
long.class,
-1L);
this.storageKey = null;
trustSelfIdentity(ServiceIdType.ACI);
trustSelfIdentity(ServiceIdType.PNI);
+ getKeyValueStore().storeEntry(lastRecipientsRefresh, null);
}
public void finishRegistration(
getRecipientTrustedResolver().resolveSelfRecipientTrusted(getSelfRecipientAddress());
trustSelfIdentity(ServiceIdType.ACI);
trustSelfIdentity(ServiceIdType.PNI);
+ getKeyValueStore().storeEntry(lastRecipientsRefresh, null);
}
public void initDatabase() {
getKeyValueStore().storeEntry(cdsiToken, value);
}
+ public Long getLastRecipientsRefresh() {
+ return getKeyValueStore().getEntry(lastRecipientsRefresh);
+ }
+
+ public void setLastRecipientsRefresh(final Long value) {
+ getKeyValueStore().storeEntry(lastRecipientsRefresh, value);
+ }
+
public ProfileKey getProfileKey() {
return profileKey;
}