Fixed: The switch was not displaying the previously saved value. For example, if it was unchecked before, reopening the fragment would incorrectly show it as checked instead of unchecked.

This commit is contained in:
MohitMaliFtechiz 2025-04-14 14:24:54 +05:30
parent 1d3944dab5
commit ad9d43b455

View File

@ -19,6 +19,7 @@
package org.kiwix.kiwixmobile.core.page
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuInflater
@ -182,7 +183,6 @@ abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActiv
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
pageScreenState.value = pageScreenState.value.copy(
isSearchActive = pageScreenState.value.isSearchActive,
searchQueryHint = searchQueryHint,
searchText = "",
searchValueChangedListener = { onTextChanged(it) },
@ -190,30 +190,12 @@ abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActiv
screenTitle = screenTitle,
noItemsString = noItemsString,
switchString = switchString,
switchIsChecked = pageScreenState.value.switchIsChecked,
onSwitchCheckedChanged = { onSwitchCheckedChanged(it) },
switchIsChecked = switchIsChecked,
onSwitchCheckedChanged = { onSwitchCheckedChanged(it).invoke() },
deleteIconTitle = deleteIconTitle
)
// setupMenu()
val activity = requireActivity() as CoreMainActivity
// fragmentPageBinding?.recyclerView?.apply {
// layoutManager =
// LinearLayoutManager(activity, RecyclerView.VERTICAL, false)
// adapter = pageAdapter
// fragmentTitle?.let(::setToolTipWithContentDescription)
// }
// fragmentPageBinding?.noPage?.text = noItemsString
// fragmentPageBinding?.pageSwitch?.apply {
// text = switchString
// isChecked = switchIsChecked
// // hide switches for custom apps, see more info here https://github.com/kiwix/kiwix-android/issues/3523
// visibility = if (requireActivity().isCustomApp()) GONE else VISIBLE
// }
compositeDisposable.add(pageViewModel.effects.subscribe { it.invokeWith(activity) })
// fragmentPageBinding?.pageSwitch?.setOnCheckedChangeListener { _, isChecked ->
// pageViewModel.actions.offer(Action.UserClickedShowAllToggle(isChecked))
// }
pageViewModel.state.observe(viewLifecycleOwner, Observer(::render))
// hides keyboard when scrolled
@ -260,6 +242,7 @@ abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActiv
}
private fun onSwitchCheckedChanged(isChecked: Boolean): () -> Unit = {
Log.e("PAGE_FRAGMENT", "onSwitchCheckedChanged: $isChecked")
pageScreenState.value = pageScreenState.value.copy(switchIsChecked = isChecked)
pageViewModel.actions.offer(Action.UserClickedShowAllToggle(isChecked))
}
@ -313,7 +296,7 @@ abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActiv
private fun render(state: PageState<*>) {
pageScreenState.value = pageScreenState.value.copy(
switchIsEnabled = !state.isInSelectionState,
pageState = state,
pageState = state
)
if (state.isInSelectionState) {
if (actionMode == null) {