diff --git a/app/src/main/java/com/futo/platformplayer/UIDialogs.kt b/app/src/main/java/com/futo/platformplayer/UIDialogs.kt index 0ebf26bd490101fa212040f3260f6b8959cdd0ca..f0b8abeabc14f7efc839afad6cb051693d583845 100644 --- a/app/src/main/java/com/futo/platformplayer/UIDialogs.kt +++ b/app/src/main/java/com/futo/platformplayer/UIDialogs.kt @@ -304,12 +304,16 @@ class UIDialogs { showDialog(context, R.drawable.ic_error, text, null, null, 0, cancelButtonAction, confirmButtonAction) } - fun showUpdateAvailableDialog(context: Context, lastVersion: Int) { + fun showUpdateAvailableDialog(context: Context, lastVersion: Int, hideExceptionButtons: Boolean = false) { val dialog = AutoUpdateDialog(context); registerDialogOpened(dialog); dialog.setOnDismissListener { registerDialogClosed(dialog) }; dialog.show(); dialog.setMaxVersion(lastVersion); + + if (hideExceptionButtons) { + dialog.hideExceptionButtons() + } } fun showChangelogDialog(context: Context, lastVersion: Int) { diff --git a/app/src/main/java/com/futo/platformplayer/activities/ExceptionActivity.kt b/app/src/main/java/com/futo/platformplayer/activities/ExceptionActivity.kt index 99a6e1b0b9835647db1b1e1beb7734c92b438c21..c3ba7daab50fca3408ffcbdceca57b6653054b7e 100644 --- a/app/src/main/java/com/futo/platformplayer/activities/ExceptionActivity.kt +++ b/app/src/main/java/com/futo/platformplayer/activities/ExceptionActivity.kt @@ -4,6 +4,7 @@ import android.content.Context import android.content.Intent import android.os.Build import android.os.Bundle +import android.view.View import android.widget.LinearLayout import android.widget.TextView import android.widget.Toast @@ -15,6 +16,7 @@ import com.futo.platformplayer.logging.LogLevel import com.futo.platformplayer.logging.Logging import com.futo.platformplayer.setNavigationBarColorAndIcons import com.futo.platformplayer.states.StateApp +import com.futo.platformplayer.states.StateUpdate import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -28,6 +30,7 @@ class ExceptionActivity : AppCompatActivity() { private lateinit var _buttonSubmit: LinearLayout; private lateinit var _buttonRestart: LinearLayout; private lateinit var _buttonClose: LinearLayout; + private lateinit var _buttonCheckForUpdates: LinearLayout; private var _file: File? = null; private var _submitted = false; @@ -45,6 +48,7 @@ class ExceptionActivity : AppCompatActivity() { _buttonSubmit = findViewById(R.id.button_submit); _buttonRestart = findViewById(R.id.button_restart); _buttonClose = findViewById(R.id.button_close); + _buttonCheckForUpdates = findViewById(R.id.button_check_for_updates); val context = intent.getStringExtra(EXTRA_CONTEXT) ?: getString(R.string.unknown_context); val stack = intent.getStringExtra(EXTRA_STACK) ?: getString(R.string.something_went_wrong_missing_stack_trace); @@ -83,6 +87,17 @@ class ExceptionActivity : AppCompatActivity() { _buttonClose.setOnClickListener { finish(); }; + + if (!BuildConfig.IS_PLAYSTORE_BUILD) { + _buttonCheckForUpdates.visibility = View.VISIBLE + _buttonCheckForUpdates.setOnClickListener { + lifecycleScope.launch(Dispatchers.IO) { + StateUpdate.instance.checkForUpdates(this@ExceptionActivity, true, true) + } + } + } else { + _buttonCheckForUpdates.visibility = View.GONE + } } private fun submitFile() { diff --git a/app/src/main/java/com/futo/platformplayer/dialogs/AutoUpdateDialog.kt b/app/src/main/java/com/futo/platformplayer/dialogs/AutoUpdateDialog.kt index 3f7fda29cfd747e54a18a9bd77ec7503a3e68122..5e2b72de49e83997db0538e69d1f2c61c6e94bd8 100644 --- a/app/src/main/java/com/futo/platformplayer/dialogs/AutoUpdateDialog.kt +++ b/app/src/main/java/com/futo/platformplayer/dialogs/AutoUpdateDialog.kt @@ -96,6 +96,11 @@ class AutoUpdateDialog(context: Context?) : AlertDialog(context) { Logger.i(TAG, "Cleared InstallReceiver.onReceiveResult handler.") } + fun hideExceptionButtons() { + _buttonNever.visibility = View.GONE + _buttonShowChangelog.visibility = View.GONE + } + private fun update() { _buttonShowChangelog.visibility = Button.GONE; _buttonNever.visibility = Button.GONE; diff --git a/app/src/main/java/com/futo/platformplayer/states/StateUpdate.kt b/app/src/main/java/com/futo/platformplayer/states/StateUpdate.kt index 7a625a1532b67ea92f6df2fb34bd97197d8968b1..ebc75dd17e6d9a613ac765df8b05f67bc5aa63a9 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StateUpdate.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StateUpdate.kt @@ -155,7 +155,7 @@ class StateUpdate { } } - suspend fun checkForUpdates(context: Context, showUpToDateToast: Boolean) = withContext(Dispatchers.IO) { + suspend fun checkForUpdates(context: Context, showUpToDateToast: Boolean, hideExceptionButtons: Boolean = false) = withContext(Dispatchers.IO) { try { val client = ManagedHttpClient(); val latestVersion = downloadVersionCode(client); @@ -167,7 +167,7 @@ class StateUpdate { if (latestVersion > currentVersion) { withContext(Dispatchers.Main) { try { - UIDialogs.showUpdateAvailableDialog(context, latestVersion); + UIDialogs.showUpdateAvailableDialog(context, latestVersion, hideExceptionButtons); } catch (e: Throwable) { UIDialogs.toast(context, "Failed to show update dialog"); Logger.w(TAG, "Error occurred in update dialog."); diff --git a/app/src/main/res/layout/activity_exception.xml b/app/src/main/res/layout/activity_exception.xml index 7f88ba94392d36fa09f09e75b5fd413184307cd9..eb1a29bba351b695028516b361f66a7241546eda 100644 --- a/app/src/main/res/layout/activity_exception.xml +++ b/app/src/main/res/layout/activity_exception.xml @@ -37,9 +37,22 @@ android:fontFamily="@font/inter_extra_light" /> </FrameLayout> - <Space - android:layout_width="20dp" - android:layout_height="match_parent" /> + <LinearLayout + android:id="@+id/button_check_for_updates" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:paddingStart="20dp" + android:paddingEnd="20dp" + android:gravity="center" + android:background="@drawable/background_button_primary_round_4dp" + android:layout_gravity="center_horizontal"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textAlignment="center" + android:text="@string/check_for_updates"/> + </LinearLayout> </LinearLayout> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fabd85da1d4f3259557d34d9eddec2f298163652..274feb828aa579d108d93f6fa1e046fae52aeded 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -749,6 +749,7 @@ <string name="add_creator">Add Creators</string> <string name="select">Select</string> <string name="zoom">Zoom</string> + <string name="check_to_see_if_an_update_is_available">Check to see if an update is available.</string> <string-array name="home_screen_array"> <item>Recommendations</item> <item>Subscriptions</item>