Add further distribution sync logging.

fork-5.53.8
Alex Hart 2022-08-05 14:14:46 -03:00 zatwierdzone przez GitHub
rodzic 886c4b64f2
commit 999314255c
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
1 zmienionych plików z 18 dodań i 0 usunięć

Wyświetl plik

@ -69,24 +69,36 @@ public class StoryDistributionListRecordProcessor extends DefaultStorageRecordPr
@Override @Override
@NonNull Optional<SignalStoryDistributionListRecord> getMatching(@NonNull SignalStoryDistributionListRecord remote, @NonNull StorageKeyGenerator keyGenerator) { @NonNull Optional<SignalStoryDistributionListRecord> getMatching(@NonNull SignalStoryDistributionListRecord remote, @NonNull StorageKeyGenerator keyGenerator) {
Log.d(TAG, "Attempting to get matching record...");
RecipientId matching = SignalDatabase.distributionLists().getRecipientIdForSyncRecord(remote); RecipientId matching = SignalDatabase.distributionLists().getRecipientIdForSyncRecord(remote);
if (matching == null && UuidUtil.parseOrThrow(remote.getIdentifier()).equals(DistributionId.MY_STORY.asUuid())) {
Log.e(TAG, "Cannot find matching database record for My Story.");
throw new MyStoryDoesNotExistException();
}
if (matching != null) { if (matching != null) {
Log.d(TAG, "Found a matching RecipientId for the distribution list...");
RecipientRecord recordForSync = SignalDatabase.recipients().getRecordForSync(matching); RecipientRecord recordForSync = SignalDatabase.recipients().getRecordForSync(matching);
if (recordForSync == null) { if (recordForSync == null) {
Log.e(TAG, "Could not find a record for the recipient id in the recipient table");
throw new IllegalStateException("Found matching recipient but couldn't generate record for sync."); throw new IllegalStateException("Found matching recipient but couldn't generate record for sync.");
} }
if (recordForSync.getGroupType().getId() != RecipientDatabase.GroupType.DISTRIBUTION_LIST.getId()) { if (recordForSync.getGroupType().getId() != RecipientDatabase.GroupType.DISTRIBUTION_LIST.getId()) {
Log.d(TAG, "Record has an incorrect group type.");
throw new InvalidGroupTypeException(); throw new InvalidGroupTypeException();
} }
Optional<SignalStoryDistributionListRecord> record = StorageSyncModels.localToRemoteRecord(recordForSync).getStoryDistributionList(); Optional<SignalStoryDistributionListRecord> record = StorageSyncModels.localToRemoteRecord(recordForSync).getStoryDistributionList();
if (record.isPresent()) { if (record.isPresent()) {
Log.d(TAG, "Found a matching record.");
return record; return record;
} else { } else {
Log.e(TAG, "Could not resolve the record");
throw new UnexpectedEmptyOptionalException(); throw new UnexpectedEmptyOptionalException();
} }
} else { } else {
Log.d(TAG, "Could not find a matching record. Returning an empty.");
return Optional.empty(); return Optional.empty();
} }
} }
@ -167,4 +179,10 @@ public class StoryDistributionListRecordProcessor extends DefaultStorageRecordPr
* absent, even though a RecipientSettings was found. * absent, even though a RecipientSettings was found.
*/ */
private static class UnexpectedEmptyOptionalException extends RuntimeException {} private static class UnexpectedEmptyOptionalException extends RuntimeException {}
/**
* Thrown when we try to ge the matching record for the "My Story" distribution ID but
* it isn't in the database.
*/
private static class MyStoryDoesNotExistException extends RuntimeException {}
} }