Add distinctUntilChanged operator to security info flowable.

fork-5.53.8
Alex Hart 2022-08-16 09:55:04 -03:00
rodzic 57e476988e
commit b2c974a684
2 zmienionych plików z 6 dodań i 5 usunięć

Wyświetl plik

@ -131,7 +131,7 @@ class ConversationRepository {
}
/**
* Watchest the given recipient id for changes, and gets the security info for the recipient
* Watches the given recipient id for changes, and gets the security info for the recipient
* whenever a change occurs.
*
* @param recipientId The recipient id we are interested in
@ -140,6 +140,7 @@ class ConversationRepository {
*/
@NonNull Observable<ConversationSecurityInfo> getSecurityInfo(@NonNull RecipientId recipientId) {
return Recipient.observable(recipientId)
.distinctUntilChanged((lhs, rhs) -> lhs.isPushGroup() == rhs.isPushGroup() && lhs.getRegistered().equals(rhs.getRegistered()))
.switchMapSingle(this::getSecurityInfo)
.subscribeOn(Schedulers.io());
}
@ -154,7 +155,7 @@ class ConversationRepository {
registeredState = RecipientDatabase.RegisteredState.REGISTERED;
} else {
Log.i(TAG, "Checking through resolved recipient");
registeredState = recipient.resolve().getRegistered();
registeredState = recipient.getRegistered();
}
Log.i(TAG, "Resolved registered state: " + registeredState);

Wyświetl plik

@ -135,8 +135,7 @@ public class ConversationViewModel extends ViewModel {
.map(Recipient::resolved)
.subscribe(recipientCache);
conversationStateStore.update(Observable.combineLatest(recipientId, conversationStateTick, (id, tick) -> id)
.distinctUntilChanged()
conversationStateStore.update(Observable.combineLatest(recipientId.distinctUntilChanged(), conversationStateTick, (id, tick) -> id)
.switchMap(conversationRepository::getSecurityInfo)
.toFlowable(BackpressureStrategy.LATEST),
(securityInfo, state) -> state.withSecurityInfo(securityInfo));
@ -313,7 +312,8 @@ public class ConversationViewModel extends ViewModel {
@NonNull Flowable<ConversationSecurityInfo> getConversationSecurityInfo(@NonNull RecipientId recipientId) {
return getConversationState().map(ConversationState::getSecurityInfo)
.filter(info -> info.isInitialized() && Objects.equals(info.getRecipientId(), recipientId));
.filter(info -> info.isInitialized() && Objects.equals(info.getRecipientId(), recipientId))
.distinctUntilChanged();
}
void updateSecurityInfo() {