Skip to content

Commit fc06159

Browse files
committed
Fix inconsistent channel group list and item view mode
1 parent 4573407 commit fc06159

2 files changed

Lines changed: 15 additions & 10 deletions

File tree

app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionFragment.kt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,11 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
254254

255255
viewModel = ViewModelProvider(this)[SubscriptionViewModel::class.java]
256256
viewModel.stateLiveData.observe(viewLifecycleOwner) { it?.let(this::handleResult) }
257-
viewModel.feedGroupsLiveData.observe(viewLifecycleOwner) { it?.let(this::handleFeedGroups) }
257+
viewModel.feedGroupsLiveData.observe(viewLifecycleOwner) {
258+
it?.let { (groups, listViewMode) ->
259+
handleFeedGroups(groups, listViewMode)
260+
}
261+
}
258262

259263
setupInitialLayout()
260264
}
@@ -405,24 +409,22 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
405409
}
406410
}
407411

408-
private fun handleFeedGroups(groups: List<Group>) {
409-
val listViewMode = viewModel.getListViewMode()
410-
412+
private fun handleFeedGroups(groups: List<Group>, listViewMode: Boolean) {
411413
if (feedGroupsCarouselState != null) {
412414
feedGroupsCarousel.onRestoreInstanceState(feedGroupsCarouselState)
413415
feedGroupsCarouselState = null
414416
}
415417

416-
feedGroupsCarousel.listViewMode = listViewMode
417-
feedGroupsSortMenuItem.showSortButton = groups.size > 1
418-
feedGroupsSortMenuItem.listViewMode = listViewMode
419418
binding.itemsList.post {
420419
if (context == null) {
421420
// since this part was posted to the next UI cycle, the fragment might have been
422421
// removed in the meantime
423422
return@post
424423
}
425424

425+
feedGroupsCarousel.listViewMode = listViewMode
426+
feedGroupsSortMenuItem.showSortButton = groups.size > 1
427+
feedGroupsSortMenuItem.listViewMode = listViewMode
426428
feedGroupsCarousel.notifyChanged(FeedGroupCarouselItem.PAYLOAD_UPDATE_LIST_VIEW_MODE)
427429
feedGroupsSortMenuItem.notifyChanged(GroupsHeader.PAYLOAD_UPDATE_ICONS)
428430

app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionViewModel.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ class SubscriptionViewModel(application: Application) : AndroidViewModel(applica
2727
private val listViewModeFlowable = listViewMode.distinctUntilChanged()
2828

2929
private val mutableStateLiveData = MutableLiveData<SubscriptionState>()
30-
private val mutableFeedGroupsLiveData = MutableLiveData<List<Group>>()
30+
private val mutableFeedGroupsLiveData = MutableLiveData<Pair<List<Group>, Boolean>>()
3131
val stateLiveData: LiveData<SubscriptionState> = mutableStateLiveData
32-
val feedGroupsLiveData: LiveData<List<Group>> = mutableFeedGroupsLiveData
32+
val feedGroupsLiveData: LiveData<Pair<List<Group>, Boolean>> = mutableFeedGroupsLiveData
3333

3434
private var feedGroupItemsDisposable = Flowable
3535
.combineLatest(
@@ -39,7 +39,10 @@ class SubscriptionViewModel(application: Application) : AndroidViewModel(applica
3939
)
4040
.throttleLatest(DEFAULT_THROTTLE_TIMEOUT, TimeUnit.MILLISECONDS)
4141
.map { (feedGroups, listViewMode) ->
42-
feedGroups.map(if (listViewMode) ::FeedGroupCardItem else ::FeedGroupCardGridItem)
42+
Pair(
43+
feedGroups.map(if (listViewMode) ::FeedGroupCardItem else ::FeedGroupCardGridItem),
44+
listViewMode
45+
)
4346
}
4447
.subscribeOn(Schedulers.io())
4548
.subscribe(

0 commit comments

Comments
 (0)