Add batch identity checks to stories and share/forward flows.

This commit is contained in:
Cody Henthorne
2022-07-26 16:31:55 -04:00
parent 87cb2d6bf8
commit a7a5f2e8c6
9 changed files with 418 additions and 24 deletions

View File

@@ -16,6 +16,8 @@ public final class IdentityRecordList {
public static final IdentityRecordList EMPTY = new IdentityRecordList(Collections.emptyList());
private static final long DEFAULT_UNTRUSTED_WINDOW = TimeUnit.SECONDS.toMillis(5);
private final List<IdentityRecord> identityRecords;
private final boolean isVerified;
private final boolean isUnverified;
@@ -78,7 +80,7 @@ public final class IdentityRecordList {
continue;
}
if (isUntrusted(identityRecord)) {
if (isUntrusted(identityRecord, DEFAULT_UNTRUSTED_WINDOW)) {
return true;
}
}
@@ -87,10 +89,14 @@ public final class IdentityRecordList {
}
public @NonNull List<IdentityRecord> getUntrustedRecords() {
return getUntrustedRecords(DEFAULT_UNTRUSTED_WINDOW);
}
public @NonNull List<IdentityRecord> getUntrustedRecords(long untrustedWindowMillis) {
List<IdentityRecord> results = new ArrayList<>(identityRecords.size());
for (IdentityRecord identityRecord : identityRecords) {
if (isUntrusted(identityRecord)) {
if (isUntrusted(identityRecord, untrustedWindowMillis)) {
results.add(identityRecord);
}
}
@@ -102,7 +108,7 @@ public final class IdentityRecordList {
List<Recipient> untrusted = new ArrayList<>(identityRecords.size());
for (IdentityRecord identityRecord : identityRecords) {
if (isUntrusted(identityRecord)) {
if (isUntrusted(identityRecord, DEFAULT_UNTRUSTED_WINDOW)) {
untrusted.add(Recipient.resolved(identityRecord.getRecipientId()));
}
}
@@ -134,9 +140,9 @@ public final class IdentityRecordList {
return unverified;
}
private static boolean isUntrusted(@NonNull IdentityRecord identityRecord) {
private static boolean isUntrusted(@NonNull IdentityRecord identityRecord, long untrustedWindowMillis) {
return !identityRecord.isApprovedNonBlocking() &&
System.currentTimeMillis() - identityRecord.getTimestamp() < TimeUnit.SECONDS.toMillis(5);
System.currentTimeMillis() - identityRecord.getTimestamp() < untrustedWindowMillis;
}
}