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

Wyświetl plik

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