kopia lustrzana https://github.com/ryukoposting/Signal-Android
Add distinctUntilChanged operator to security info flowable.
rodzic
57e476988e
commit
b2c974a684
|
@ -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);
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
Ładowanie…
Reference in New Issue