diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.kt index e7dce2f2d..c564d587b 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.kt @@ -69,10 +69,15 @@ class ZimManageActivity : BaseActivity() { offscreenPageLimit = sectionsPagerAdapter.count - 1 tabs.setupWithViewPager(this) addOnPageChangeListener(SimplePageChangeListener(::updateMenu)) + addOnPageChangeListener(SimplePageChangeListener(::updatePage)) } setViewPagerPositionFromIntent(intent) } + private fun updatePage(position: Int) { + zimManageViewModel.currentPage.offer(position) + } + override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) setViewPagerPositionFromIntent(intent) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageViewModel.kt b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageViewModel.kt index 0156bc3bc..bfb42baef 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageViewModel.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageViewModel.kt @@ -108,6 +108,9 @@ class ZimManageViewModel @Inject constructor( val fileSelectActions = PublishProcessor.create() val requestDownloadLibrary = BehaviorProcessor.createDefault(Unit) val requestFiltering = BehaviorProcessor.createDefault("") + val currentPage = PublishProcessor.create() + + val libraryTabIsVisible = currentPage.map { it == 1 }.filter { it } private val compositeDisposable = CompositeDisposable() diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectFragment.kt index 594ac64ed..d2b58e904 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectFragment.kt @@ -111,6 +111,12 @@ class ZimFileSelectFragment : BaseFragment() { if (savedInstanceState != null && savedInstanceState.getBoolean(WAS_IN_ACTION_MODE)) { zimManageViewModel.fileSelectActions.offer(FileSelectActions.RestartActionMode) } + + disposable.add(zimManageViewModel.libraryTabIsVisible.subscribe { finishActionMode() }) + } + + private fun finishActionMode() { + actionMode?.finish() } private fun sideEffects() = zimManageViewModel.sideEffects.subscribe( diff --git a/app/src/test/java/org/kiwix/kiwixmobile/zim_manager/ZimManageViewModelTest.kt b/app/src/test/java/org/kiwix/kiwixmobile/zim_manager/ZimManageViewModelTest.kt index ec7eb8ef2..7385640aa 100644 --- a/app/src/test/java/org/kiwix/kiwixmobile/zim_manager/ZimManageViewModelTest.kt +++ b/app/src/test/java/org/kiwix/kiwixmobile/zim_manager/ZimManageViewModelTest.kt @@ -517,4 +517,18 @@ class ZimManageViewModelTest { .assertValues(StartMultiSelection(viewModel.fileSelectActions)) } } + + @Test + fun `libraryTabIsVisible emits when currentPage is 1`() { + viewModel.libraryTabIsVisible.test() + .also { viewModel.currentPage.offer(1) } + .assertValue(true) + } + + @Test + fun `libraryTabIsVisible does not emit when currentPage is 0`() { + viewModel.libraryTabIsVisible.test() + .also { viewModel.currentPage.offer(0) } + .assertEmpty() + } }