From 3359f3881a7aa7bc3d2bff7786a6cf3a65c0470e Mon Sep 17 00:00:00 2001 From: TwistedUmbrellaX Date: Sat, 9 Mar 2024 08:30:32 -0500 Subject: [PATCH] feat: keep navigation visible for back --- app/src/main/java/ani/dantotsu/Functions.kt | 14 ++++++++------ .../main/java/ani/dantotsu/MainActivity.kt | 19 +++++++++++++++++-- .../connections/anilist/AnilistQueries.kt | 2 +- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/Functions.kt b/app/src/main/java/ani/dantotsu/Functions.kt index 67af749c..cdc8ffdd 100644 --- a/app/src/main/java/ani/dantotsu/Functions.kt +++ b/app/src/main/java/ani/dantotsu/Functions.kt @@ -904,16 +904,16 @@ fun toast(string: String?) { } } -fun snackString(s: String?, activity: Activity? = null, clipboard: String? = null) { +fun snackString(s: String?, activity: Activity? = null, clipboard: String? = null) : Snackbar? { try { //I have no idea why this sometimes crashes for some people... if (s != null) { (activity ?: currActivity())?.apply { + val snackBar = Snackbar.make( + window.decorView.findViewById(android.R.id.content), + s, + Snackbar.LENGTH_SHORT + ) runOnUiThread { - val snackBar = Snackbar.make( - window.decorView.findViewById(android.R.id.content), - s, - Snackbar.LENGTH_SHORT - ) snackBar.view.apply { updateLayoutParams { gravity = (Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM) @@ -933,6 +933,7 @@ fun snackString(s: String?, activity: Activity? = null, clipboard: String? = nul } snackBar.show() } + return snackBar } logger(s) } @@ -940,6 +941,7 @@ fun snackString(s: String?, activity: Activity? = null, clipboard: String? = nul logger(e.stackTraceToString()) Injekt.get().logException(e) } + return null } open class NoPaddingArrayAdapter(context: Context, layoutId: Int, items: List) : diff --git a/app/src/main/java/ani/dantotsu/MainActivity.kt b/app/src/main/java/ani/dantotsu/MainActivity.kt index 787f3d0a..ba47d2fb 100644 --- a/app/src/main/java/ani/dantotsu/MainActivity.kt +++ b/app/src/main/java/ani/dantotsu/MainActivity.kt @@ -52,6 +52,8 @@ import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.settings.saving.SharedPreferenceBooleanLiveData import ani.dantotsu.subcriptions.Subscription.Companion.startSubscription import ani.dantotsu.themes.ThemeManager +import com.google.android.material.snackbar.BaseTransientBottomBar +import com.google.android.material.snackbar.Snackbar import eu.kanade.domain.source.service.SourcePreferences import io.noties.markwon.Markwon import io.noties.markwon.SoftBreakAddsNewLinePlugin @@ -144,7 +146,20 @@ class MainActivity : AppCompatActivity() { finish() } doubleBackToExitPressedOnce = true - snackString(this@MainActivity.getString(R.string.back_to_exit)) + WindowInsetsControllerCompat(window, window.decorView) + .show(WindowInsetsCompat.Type.navigationBars()) + snackString(this@MainActivity.getString(R.string.back_to_exit)).apply { + this?.addCallback(object : BaseTransientBottomBar.BaseCallback() { + override fun onDismissed(transientBottomBar: Snackbar?, event: Int) { + super.onDismissed(transientBottomBar, event) + WindowInsetsControllerCompat(window, window.decorView).let { controller -> + controller.systemBarsBehavior = + WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE + controller.hide(WindowInsetsCompat.Type.navigationBars()) + } + } + }) + } Handler(Looper.getMainLooper()).postDelayed( { doubleBackToExitPressedOnce = false }, 2000 @@ -359,7 +374,7 @@ class MainActivity : AppCompatActivity() { WindowInsetsControllerCompat(window, window.decorView).let { controller -> controller.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE - controller.hide(WindowInsetsCompat.Type.systemBars()) + controller.hide(WindowInsetsCompat.Type.navigationBars()) } } diff --git a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt index e1b52dba..bbc2bb07 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt @@ -281,7 +281,7 @@ class AnilistQueries { } else { if (currContext()?.let { isOnline(it) } == true) { snackString(currContext()?.getString(R.string.error_getting_data)) - } + } else { } } } val mal = async {