Confirming exit from app

This commit is contained in:
Zakhar Timoshenko
2022-07-12 19:14:12 +03:00
parent b293fee742
commit 8b3ef3a3f3
2 changed files with 20 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup.MarginLayoutParams
import android.widget.Toast
import androidx.activity.result.ActivityResultCallback
import androidx.annotation.IdRes
import androidx.appcompat.view.ActionMode
@@ -20,6 +21,8 @@ import com.google.android.material.appbar.AppBarLayout.LayoutParams.*
import com.google.android.material.navigation.NavigationBarView
import com.google.android.material.snackbar.Snackbar
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.koin.android.ext.android.get
import org.koin.androidx.viewmodel.ext.android.viewModel
@@ -60,6 +63,8 @@ class MainActivity :
View.OnFocusChangeListener,
SearchSuggestionListener, NavigationBarView.OnItemSelectedListener {
private var isConfirmingExit: Boolean = false
private val viewModel by viewModel<MainViewModel>()
private val searchSuggestionViewModel by viewModel<SearchSuggestionViewModel>()
private val voiceInputLauncher = registerForActivityResult(VoiceInputContract(), VoiceInputCallback())
@@ -131,6 +136,7 @@ class MainActivity :
setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
runOnCommit { onSearchClosed() }
}
shouldHandleExitConfirmation() -> lifecycleScope.launch { resetExitConfirmation() }
else -> super.onBackPressed()
}
}
@@ -147,6 +153,19 @@ class MainActivity :
return super.onOptionsItemSelected(item)
}
private suspend fun resetExitConfirmation() {
isConfirmingExit = true
val toast = Toast.makeText(this, R.string.confirm_exit, Toast.LENGTH_LONG)
toast.show()
delay(2000)
toast.cancel()
isConfirmingExit = false
}
private fun shouldHandleExitConfirmation(): Boolean {
return !isConfirmingExit
}
override fun onClick(v: View) {
when (v.id) {
R.id.fab -> viewModel.openLastReader()

View File

@@ -337,4 +337,5 @@
<string name="changelog">Changelog</string>
<string name="explore">Explore</string>
<string name="tools">Tools</string>
<string name="confirm_exit">Press back again to exit</string>
</resources>