diff --git a/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/TextSecureSessionStore.java b/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/TextSecureSessionStore.java index 9be4da0f3b..710d32e53c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/TextSecureSessionStore.java +++ b/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/TextSecureSessionStore.java @@ -104,19 +104,22 @@ public class TextSecureSessionStore implements SignalServiceSessionStore { @Override public Set getAllAddressesWithActiveSessions(List addressNames) throws InvalidRegistrationIdException { synchronized (LOCK) { - List rows = DatabaseFactory.getSessionDatabase(context).getAllFor(addressNames); + List activeRows = DatabaseFactory.getSessionDatabase(context) + .getAllFor(addressNames) + .stream() + .filter(row -> isActive(row.getRecord())) + .collect(Collectors.toList()); - boolean hasInvalidRegistrationId = rows.stream() - .map(SessionDatabase.SessionRow::getRecord) - .anyMatch(record -> !isValidRegistrationId(record.getRemoteRegistrationId())); + boolean hasInvalidRegistrationId = activeRows.stream() + .map(SessionDatabase.SessionRow::getRecord) + .anyMatch(record -> !isValidRegistrationId(record.getRemoteRegistrationId())); if (hasInvalidRegistrationId) { throw new InvalidRegistrationIdException(); } - return rows.stream() - .filter(row -> isActive(row.getRecord())) - .map(row -> new SignalProtocolAddress(row.getAddress(), row.getDeviceId())) - .collect(Collectors.toSet()); + return activeRows.stream() + .map(row -> new SignalProtocolAddress(row.getAddress(), row.getDeviceId())) + .collect(Collectors.toSet()); } }