From 4328204fc6cc4079487f6ec78288326d1e93ccbb Mon Sep 17 00:00:00 2001 From: ekager Date: Wed, 2 Dec 2020 13:48:01 -0800 Subject: [PATCH] [fenix] For https://github.com/mozilla-mobile/fenix/issues/16397 - Fixes SignOutFragment crash and invisible button --- .../fenix/settings/account/SignOutFragment.kt | 37 +++++++++---------- app/src/main/res/layout/fragment_sign_out.xml | 23 +++++++++--- app/src/main/res/values/styles.xml | 16 -------- 3 files changed, 36 insertions(+), 40 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/settings/account/SignOutFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/account/SignOutFragment.kt index 2544945f58..d927485dde 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/account/SignOutFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/account/SignOutFragment.kt @@ -10,39 +10,36 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.FrameLayout -import androidx.fragment.app.DialogFragment +import com.google.android.material.bottomsheet.BottomSheetDialog +import org.mozilla.fenix.addons.runIfFragmentIsAttached import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import androidx.appcompat.app.AppCompatDialogFragment import kotlinx.android.synthetic.main.fragment_sign_out.view.* import kotlinx.coroutines.launch import mozilla.components.service.fxa.manager.FxaAccountManager import org.mozilla.fenix.R import org.mozilla.fenix.ext.requireComponents -class SignOutFragment : BottomSheetDialogFragment() { +class SignOutFragment : AppCompatDialogFragment() { private lateinit var accountManager: FxaAccountManager override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setStyle(DialogFragment.STYLE_NO_TITLE, R.style.FirefoxAccountsDialogStyle) + setStyle(STYLE_NO_TITLE, R.style.BottomSheet) } - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - val dialog = super.onCreateDialog(savedInstanceState) - - dialog.setOnShowListener { - val bottomSheet = dialog.findViewById( - com.google.android.material.R.id.design_bottom_sheet - ) as FrameLayout - val behavior = BottomSheetBehavior.from(bottomSheet) - behavior.state = BottomSheetBehavior.STATE_EXPANDED + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog = + BottomSheetDialog(requireContext(), this.theme).apply { + setOnShowListener { + val bottomSheet = + findViewById(com.google.android.material.R.id.design_bottom_sheet) as FrameLayout + val behavior = BottomSheetBehavior.from(bottomSheet) + behavior.state = BottomSheetBehavior.STATE_EXPANDED + } } - return dialog - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -63,13 +60,15 @@ class SignOutFragment : BottomSheetDialogFragment() { super.onViewCreated(view, savedInstanceState) view.signOutDisconnect.setOnClickListener { - viewLifecycleOwner.lifecycleScope.launch { + lifecycleScope.launch { requireComponents .backgroundServices.accountAbnormalities.userRequestedLogout() accountManager.logout() }.invokeOnCompletion { - if (!findNavController().popBackStack(R.id.settingsFragment, false)) { - dismiss() + runIfFragmentIsAttached { + if (!findNavController().popBackStack(R.id.settingsFragment, false)) { + dismiss() + } } } } diff --git a/app/src/main/res/layout/fragment_sign_out.xml b/app/src/main/res/layout/fragment_sign_out.xml index 2f2ea07307..4cdd424e2a 100644 --- a/app/src/main/res/layout/fragment_sign_out.xml +++ b/app/src/main/res/layout/fragment_sign_out.xml @@ -1,3 +1,4 @@ + @@ -15,24 +16,36 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="12dp" - app:drawableStartCompat="@drawable/ic_info" android:text="@string/sign_out_confirmation_message_2" android:textSize="16sp" - app:layout_constraintStart_toStartOf="parent" + app:drawableStartCompat="@drawable/ic_info" app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> -