Remove local fingerprint from remote fingerprints observable

This commit is contained in:
Paul Schaub 2020-07-14 19:47:49 +02:00
parent f4c4033686
commit 69120efb25
Signed by: vanitasvitae
GPG Key ID: 62BEE9264BF17311
1 changed files with 17 additions and 2 deletions

View File

@ -11,6 +11,7 @@ import org.mercury_im.messenger.core.viewmodel.openpgp.FingerprintViewItem;
import org.mercury_im.messenger.entity.Account;
import org.pgpainless.key.OpenPgpV4Fingerprint;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@ -46,7 +47,21 @@ public class AccountDetailsViewModel implements MercuryViewModel {
}
public Observable<List<FingerprintViewItem>> observeRemoteFingerprints(UUID accountId) {
return accountRepository.getAccount(accountId).toSingle()
.flatMapObservable(account -> openPgpRepository.observeFingerprints(accountId, account.getJid()));
return observeLocalFingerprint(accountId)
.flatMap(optional -> accountRepository.getAccount(accountId).toSingle()
.flatMapObservable(account -> openPgpRepository.observeFingerprints(accountId, account.getJid())
.map(list -> {
if (!optional.isPresent()) {
return list;
}
List<FingerprintViewItem> remoteFingerprints = new ArrayList<>();
for(FingerprintViewItem f : list) {
if (!f.getFingerprint().equals(optional.getItem())) {
remoteFingerprints.add(f);
}
}
return remoteFingerprints;
})));
}
}