Fix ANR when changing the configuration of a foldable.

This commit is contained in:
Cody Henthorne
2024-03-13 12:35:01 -04:00
parent d993748753
commit 132bc15373
2 changed files with 17 additions and 0 deletions

View File

@@ -20,6 +20,7 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.RecyclerView
import androidx.transition.TransitionInflater
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.dialog.MaterialAlertDialogBuilder
@@ -32,6 +33,7 @@ import org.signal.core.util.DimensionUnit
import org.signal.core.util.concurrent.LifecycleDisposable
import org.signal.core.util.concurrent.addTo
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.MainActivity
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.calls.links.details.CallLinkDetailsActivity
import org.thoughtcrime.securesms.calls.new.NewCallActivity
@@ -124,6 +126,12 @@ class CallLogFragment : Fragment(R.layout.call_log_fragment), CallLogAdapter.Cal
val callLogAdapter = CallLogAdapter(this)
disposables.bindTo(viewLifecycleOwner)
callLogAdapter.setPagingController(viewModel.controller)
callLogAdapter.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
(requireActivity() as? MainActivity)?.onFirstRender()
callLogAdapter.unregisterAdapterDataObserver(this)
}
})
val scrollToPositionDelegate = ScrollToPositionDelegate(
recyclerView = binding.recycler,

View File

@@ -16,6 +16,7 @@ import androidx.core.app.SharedElementCallback
import androidx.core.view.ViewCompat
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView.AdapterDataObserver
import androidx.transition.TransitionInflater
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.snackbar.Snackbar
@@ -26,6 +27,7 @@ import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import org.signal.core.util.concurrent.LifecycleDisposable
import org.thoughtcrime.securesms.MainActivity
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.Material3SearchToolbar
import org.thoughtcrime.securesms.components.reminder.ExpiredBuildReminder
@@ -262,6 +264,13 @@ class StoriesLandingFragment : DSLSettingsFragment(layoutId = R.layout.stories_l
recyclerView?.scrollToPosition(0)
}
})
this.adapter.registerAdapterDataObserver(object : AdapterDataObserver() {
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
(requireActivity() as? MainActivity)?.onFirstRender()
this@StoriesLandingFragment.adapter.unregisterAdapterDataObserver(this)
}
})
}
private fun getConfiguration(state: StoriesLandingState): DSLConfiguration {