diff --git a/domain/src/main/java/org/mercury_im/messenger/core/viewmodel/account/detail/AccountDetailsViewModel.java b/domain/src/main/java/org/mercury_im/messenger/core/viewmodel/account/detail/AccountDetailsViewModel.java index 27e0b17..4e90fc6 100644 --- a/domain/src/main/java/org/mercury_im/messenger/core/viewmodel/account/detail/AccountDetailsViewModel.java +++ b/domain/src/main/java/org/mercury_im/messenger/core/viewmodel/account/detail/AccountDetailsViewModel.java @@ -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> 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 remoteFingerprints = new ArrayList<>(); + for(FingerprintViewItem f : list) { + if (!f.getFingerprint().equals(optional.getItem())) { + remoteFingerprints.add(f); + } + } + return remoteFingerprints; + }))); } }