Remove local fingerprint from remote fingerprints observable
This commit is contained in:
parent
f4c4033686
commit
69120efb25
|
@ -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;
|
||||
})));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue