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