AccountFragment: Ask for confirmation before logout
Avoid user clicking the logout button accidentally Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -29,7 +29,6 @@ import com.aurora.Constants.URL_LICENSE
|
||||
import com.aurora.Constants.URL_TOS
|
||||
import com.aurora.extensions.browse
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.data.providers.AccountProvider
|
||||
import com.aurora.store.data.providers.AuthProvider
|
||||
import com.aurora.store.databinding.FragmentAccountBinding
|
||||
import com.aurora.store.view.ui.commons.BaseFragment
|
||||
@@ -70,11 +69,7 @@ class AccountFragment : BaseFragment<FragmentAccountBinding>() {
|
||||
}
|
||||
|
||||
binding.btnLogout.addOnClickListener {
|
||||
binding.btnLogout.updateProgress(true)
|
||||
AccountProvider.with(view.context).logout()
|
||||
findNavController().navigate(
|
||||
AccountFragmentDirections.actionAccountFragmentToSplashFragment()
|
||||
)
|
||||
findNavController().navigate(R.id.logoutDialog)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.aurora.store.view.ui.account
|
||||
|
||||
import android.app.Dialog
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.data.providers.AccountProvider
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
class LogoutDialog: DialogFragment() {
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
return MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(R.string.action_logout_confirmation_title)
|
||||
.setMessage(R.string.action_logout_confirmation_message)
|
||||
.setPositiveButton(getString(android.R.string.ok)) { _, _ -> logout() }
|
||||
.setNegativeButton(getString(android.R.string.cancel)) { _, _ -> dialog?.dismiss()}
|
||||
.create()
|
||||
}
|
||||
|
||||
private fun logout() {
|
||||
AccountProvider.with(requireContext()).logout()
|
||||
findNavController().navigate(LogoutDialogDirections.actionLogoutDialogToSplashFragment())
|
||||
}
|
||||
}
|
||||
@@ -94,14 +94,7 @@
|
||||
android:id="@+id/accountFragment"
|
||||
android:name="com.aurora.store.view.ui.account.AccountFragment"
|
||||
android:label="@string/title_account_manager"
|
||||
tools:layout="@layout/fragment_account" >
|
||||
<action
|
||||
android:id="@+id/action_accountFragment_to_splashFragment"
|
||||
app:destination="@id/splashFragment"
|
||||
app:launchSingleTop="true"
|
||||
app:popUpTo="@id/mobile_navigation"
|
||||
app:popUpToInclusive="true" />
|
||||
</fragment>
|
||||
tools:layout="@layout/fragment_account" />
|
||||
<fragment
|
||||
android:id="@+id/settingsFragment"
|
||||
android:name="com.aurora.store.view.ui.preferences.SettingsFragment"
|
||||
@@ -480,4 +473,15 @@
|
||||
android:id="@+id/aboutDialog"
|
||||
android:name="com.aurora.store.view.ui.about.AboutDialog"
|
||||
android:label="@string/title_about" />
|
||||
<dialog
|
||||
android:id="@+id/logoutDialog"
|
||||
android:name="com.aurora.store.view.ui.account.LogoutDialog"
|
||||
android:label="@string/action_logout">
|
||||
<action
|
||||
android:id="@+id/action_logoutDialog_to_splashFragment"
|
||||
app:destination="@id/splashFragment"
|
||||
app:launchSingleTop="true"
|
||||
app:popUpTo="@id/mobile_navigation"
|
||||
app:popUpToInclusive="true" />
|
||||
</dialog>
|
||||
</navigation>
|
||||
|
||||
@@ -467,4 +467,8 @@
|
||||
<!-- ExportWorker -->
|
||||
<string name="export_app_summary_success">Successfully exported app bundle</string>
|
||||
<string name="export_app_summary_fail">Failed to exported app bundle</string>
|
||||
|
||||
<!-- LogoutDialog -->
|
||||
<string name="action_logout_confirmation_title">Log out?</string>
|
||||
<string name="action_logout_confirmation_message">Are you sure you want to log out?</string>
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user