Fix inconsistent channel group list and item view mode
This commit is contained in:
parent
4573407fc7
commit
fc061599f8
|
@ -254,7 +254,11 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
|
|||
|
||||
viewModel = ViewModelProvider(this)[SubscriptionViewModel::class.java]
|
||||
viewModel.stateLiveData.observe(viewLifecycleOwner) { it?.let(this::handleResult) }
|
||||
viewModel.feedGroupsLiveData.observe(viewLifecycleOwner) { it?.let(this::handleFeedGroups) }
|
||||
viewModel.feedGroupsLiveData.observe(viewLifecycleOwner) {
|
||||
it?.let { (groups, listViewMode) ->
|
||||
handleFeedGroups(groups, listViewMode)
|
||||
}
|
||||
}
|
||||
|
||||
setupInitialLayout()
|
||||
}
|
||||
|
@ -405,17 +409,12 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun handleFeedGroups(groups: List<Group>) {
|
||||
val listViewMode = viewModel.getListViewMode()
|
||||
|
||||
private fun handleFeedGroups(groups: List<Group>, listViewMode: Boolean) {
|
||||
if (feedGroupsCarouselState != null) {
|
||||
feedGroupsCarousel.onRestoreInstanceState(feedGroupsCarouselState)
|
||||
feedGroupsCarouselState = null
|
||||
}
|
||||
|
||||
feedGroupsCarousel.listViewMode = listViewMode
|
||||
feedGroupsSortMenuItem.showSortButton = groups.size > 1
|
||||
feedGroupsSortMenuItem.listViewMode = listViewMode
|
||||
binding.itemsList.post {
|
||||
if (context == null) {
|
||||
// since this part was posted to the next UI cycle, the fragment might have been
|
||||
|
@ -423,6 +422,9 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
|
|||
return@post
|
||||
}
|
||||
|
||||
feedGroupsCarousel.listViewMode = listViewMode
|
||||
feedGroupsSortMenuItem.showSortButton = groups.size > 1
|
||||
feedGroupsSortMenuItem.listViewMode = listViewMode
|
||||
feedGroupsCarousel.notifyChanged(FeedGroupCarouselItem.PAYLOAD_UPDATE_LIST_VIEW_MODE)
|
||||
feedGroupsSortMenuItem.notifyChanged(GroupsHeader.PAYLOAD_UPDATE_ICONS)
|
||||
|
||||
|
|
|
@ -27,9 +27,9 @@ class SubscriptionViewModel(application: Application) : AndroidViewModel(applica
|
|||
private val listViewModeFlowable = listViewMode.distinctUntilChanged()
|
||||
|
||||
private val mutableStateLiveData = MutableLiveData<SubscriptionState>()
|
||||
private val mutableFeedGroupsLiveData = MutableLiveData<List<Group>>()
|
||||
private val mutableFeedGroupsLiveData = MutableLiveData<Pair<List<Group>, Boolean>>()
|
||||
val stateLiveData: LiveData<SubscriptionState> = mutableStateLiveData
|
||||
val feedGroupsLiveData: LiveData<List<Group>> = mutableFeedGroupsLiveData
|
||||
val feedGroupsLiveData: LiveData<Pair<List<Group>, Boolean>> = mutableFeedGroupsLiveData
|
||||
|
||||
private var feedGroupItemsDisposable = Flowable
|
||||
.combineLatest(
|
||||
|
@ -39,7 +39,10 @@ class SubscriptionViewModel(application: Application) : AndroidViewModel(applica
|
|||
)
|
||||
.throttleLatest(DEFAULT_THROTTLE_TIMEOUT, TimeUnit.MILLISECONDS)
|
||||
.map { (feedGroups, listViewMode) ->
|
||||
feedGroups.map(if (listViewMode) ::FeedGroupCardItem else ::FeedGroupCardGridItem)
|
||||
Pair(
|
||||
feedGroups.map(if (listViewMode) ::FeedGroupCardItem else ::FeedGroupCardGridItem),
|
||||
listViewMode
|
||||
)
|
||||
}
|
||||
.subscribeOn(Schedulers.io())
|
||||
.subscribe(
|
||||
|
|
Loading…
Reference in New Issue