diff options
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.java | 38 |
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)); + }); } } |