From 1c4541ae28ae125499f8d30017ba152f5e2a671e Mon Sep 17 00:00:00 2001 From: Hicham Boushaba Date: Fri, 10 May 2024 10:33:54 +0100 Subject: [PATCH 1/3] Use the view's lifecycle owner instead of fragment's one --- .../android/ui/products/list/ProductListToolbarHelper.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/list/ProductListToolbarHelper.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/list/ProductListToolbarHelper.kt index cc214cbc0eb..755e2a7975d 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/list/ProductListToolbarHelper.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/list/ProductListToolbarHelper.kt @@ -86,7 +86,7 @@ class ProductListToolbarHelper @Inject constructor( this.viewModel = productListViewModel this.binding = binding - fragment.lifecycle.addObserver(this) + fragment.viewLifecycleOwner.lifecycle.addObserver(this) if (productListViewModel.isSearching()) { binding.productsSearchTabView.isVisible = true From 53d96e7ec8fdb092cde30c684340157c7c4b096a Mon Sep 17 00:00:00 2001 From: Hicham Boushaba Date: Fri, 10 May 2024 10:40:49 +0100 Subject: [PATCH 2/3] Remove the toolbar callback when the fragment's view is destroyed --- .../android/ui/products/list/ProductListToolbarHelper.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/list/ProductListToolbarHelper.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/list/ProductListToolbarHelper.kt index 755e2a7975d..521e5372713 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/list/ProductListToolbarHelper.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/list/ProductListToolbarHelper.kt @@ -39,6 +39,10 @@ class ProductListToolbarHelper @Inject constructor( private var scanBarcodeMenuItem: MenuItem? = null private var searchView: SearchView? = null + private val refreshOptionsMenuCallback = Runnable { + refreshOptionsMenu() + } + override fun onCreate(owner: LifecycleOwner) { (activity as FragmentActivity).onBackPressedDispatcher.addCallback( owner, @@ -98,6 +102,7 @@ class ProductListToolbarHelper @Inject constructor( override fun onDestroy(owner: LifecycleOwner) { disableSearchListeners() + binding?.toolbar?.removeCallbacks(refreshOptionsMenuCallback) listFragment = null searchMenuItem = null scanBarcodeMenuItem = null @@ -169,9 +174,7 @@ class ProductListToolbarHelper @Inject constructor( // We want to refresh the options menu after the toolbar has been inflated // Otherwise, logic in it will be executed before the toolbar is in restored state after configuration change - toolbar.post { - refreshOptionsMenu() - } + toolbar.post(refreshOptionsMenuCallback) } private fun refreshOptionsMenu() { From b8867f0a2b09492d119c6f734ab9072873e04c69 Mon Sep 17 00:00:00 2001 From: Hicham Boushaba Date: Mon, 13 May 2024 12:05:33 +0100 Subject: [PATCH 3/3] Add a release notes entry --- RELEASE-NOTES.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index a3391c01759..183f85f1b63 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,7 +1,7 @@ *** PLEASE FOLLOW THIS FORMAT: [] [] 18.7 ----- - +- [*] Products: Fixed a bug that caused the app to crash sometimes during screen rotation [https://github.com/woocommerce/woocommerce-android/pull/11484] 18.6 -----