summaryrefslogtreecommitdiff
path: root/src/com/android/car/messenger/core/ui/conversationlist/ConversationListViewModel.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/car/messenger/core/ui/conversationlist/ConversationListViewModel.java')
-rw-r--r--src/com/android/car/messenger/core/ui/conversationlist/ConversationListViewModel.java38
1 files changed, 23 insertions, 15 deletions
diff --git a/src/com/android/car/messenger/core/ui/conversationlist/ConversationListViewModel.java b/src/com/android/car/messenger/core/ui/conversationlist/ConversationListViewModel.java
index 6b5d199..e16bff5 100644
--- a/src/com/android/car/messenger/core/ui/conversationlist/ConversationListViewModel.java
+++ b/src/com/android/car/messenger/core/ui/conversationlist/ConversationListViewModel.java
@@ -18,19 +18,23 @@ package com.android.car.messenger.core.ui.conversationlist;
import android.annotation.SuppressLint;
import android.app.Application;
-import androidx.lifecycle.AndroidViewModel;
import android.car.drivingstate.CarUxRestrictions;
+import android.util.Pair;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MediatorLiveData;
+import androidx.lifecycle.Transformations;
+import com.android.car.messenger.common.Conversation;
import com.android.car.messenger.core.interfaces.AppFactory;
import com.android.car.messenger.core.interfaces.DataModel;
import com.android.car.messenger.core.models.UserAccount;
import com.android.car.messenger.core.util.L;
+import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
@@ -77,20 +81,10 @@ public class ConversationListViewModel extends AndroidViewModel {
MediatorLiveData<UIConversationLog> mutableLiveData = new MediatorLiveData<>();
mutableLiveData.postValue(UIConversationLog.getLoadingState());
mutableLiveData.addSource(
- AppFactory.get().getCarStateListener().getUxrRestrictions(),
- uxrRestrictions ->
- subscribeToConversations(userAccount, mutableLiveData, uxrRestrictions));
- return mutableLiveData;
- }
-
- private void subscribeToConversations(
- @NonNull UserAccount userAccount,
- MediatorLiveData<UIConversationLog> mutableLiveData,
- CarUxRestrictions uxRestrictions) {
- L.w("Got new ux restrictions: " + uxRestrictions);
- mutableLiveData.addSource(
- mDataModel.getConversations(userAccount),
- list -> {
+ subscribeToConversations(userAccount),
+ pair -> {
+ CarUxRestrictions uxRestrictions = pair.first;
+ Collection<Conversation> list = pair.second;
List<UIConversationItem> data =
list.stream()
.map(
@@ -102,5 +96,19 @@ public class ConversationListViewModel extends AndroidViewModel {
UIConversationLog log = UIConversationLog.getLoadedState(data);
mutableLiveData.postValue(log);
});
+ return mutableLiveData;
+ }
+
+ private LiveData<Pair<CarUxRestrictions, Collection<Conversation>>> subscribeToConversations(
+ @NonNull UserAccount userAccount) {
+ final LiveData<Collection<Conversation>> liveData =
+ mDataModel.getConversations(userAccount);
+ return Transformations.switchMap(
+ AppFactory.get().getCarStateListener().getUxrRestrictions(),
+ uxRestrictions -> {
+ L.d("Got new ux restrictions: " + uxRestrictions);
+ return Transformations.map(
+ liveData, conversations -> new Pair<>(uxRestrictions, conversations));
+ });
}
}