diff --git a/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt b/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt index 4cdcc6c69..95371ff84 100644 --- a/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt +++ b/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt @@ -177,6 +177,15 @@ class NewVersionWorker( */ @JvmStatic fun enqueueNewVersionCheckingWork(context: Context, isManual: Boolean) { + if (isManual) { + ContextCompat.getMainExecutor(context).execute { + Toast.makeText( + context, + R.string.checking_updates_toast, + Toast.LENGTH_SHORT + ).show() + } + } val workRequest = OneTimeWorkRequestBuilder() .setInputData(workDataOf(IS_MANUAL to isManual)) .build() diff --git a/app/src/main/java/org/schabi/newpipe/error/ErrorPanelHelper.kt b/app/src/main/java/org/schabi/newpipe/error/ErrorPanelHelper.kt index 023d13e9d..2ace8ffb3 100644 --- a/app/src/main/java/org/schabi/newpipe/error/ErrorPanelHelper.kt +++ b/app/src/main/java/org/schabi/newpipe/error/ErrorPanelHelper.kt @@ -13,8 +13,10 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.disposables.Disposable import java.util.concurrent.TimeUnit import org.schabi.newpipe.MainActivity +import org.schabi.newpipe.NewVersionWorker.Companion.enqueueNewVersionCheckingWork import org.schabi.newpipe.R import org.schabi.newpipe.ktx.animate +import org.schabi.newpipe.util.ReleaseVersionUtil import org.schabi.newpipe.util.external_communication.ShareUtils class ErrorPanelHelper( @@ -39,6 +41,8 @@ class ErrorPanelHelper( errorPanelRoot.findViewById(R.id.error_retry_button) private val errorOpenInBrowserButton: Button = errorPanelRoot.findViewById(R.id.error_open_in_browser) + private val errorCheckForUpdatesButton: Button = + errorPanelRoot.findViewById(R.id.error_check_for_updates) private var errorDisposable: Disposable? = null private var retryShouldBeShown: Boolean = (onRetry != null) @@ -60,6 +64,7 @@ class ErrorPanelHelper( errorActionButton.isVisible = false errorRetryButton.isVisible = false errorOpenInBrowserButton.isVisible = false + errorCheckForUpdatesButton.isVisible = false } fun showError(errorInfo: ErrorInfo) { @@ -78,6 +83,14 @@ class ErrorPanelHelper( showAndSetErrorButtonAction(R.string.error_snackbar_action) { ErrorUtil.openActivity(context, errorInfo) } + if (ReleaseVersionUtil.isReleaseApk) { + errorCheckForUpdatesButton.isVisible = true + errorCheckForUpdatesButton.setOnClickListener { + enqueueNewVersionCheckingWork(context, true) + errorCheckForUpdatesButton.isEnabled = false + errorCheckForUpdatesButton.isVisible = false + } + } } if (errorInfo.isRetryable) { diff --git a/app/src/main/java/org/schabi/newpipe/settings/UpdateSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/UpdateSettingsFragment.java index 8923972b0..8a422ee9f 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/UpdateSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/UpdateSettingsFragment.java @@ -3,7 +3,6 @@ package org.schabi.newpipe.settings; import android.app.AlertDialog; import android.content.Context; import android.os.Bundle; -import android.widget.Toast; import androidx.preference.Preference; import androidx.preference.PreferenceManager; @@ -25,7 +24,6 @@ public class UpdateSettingsFragment extends BasePreferenceFragment { }; private final Preference.OnPreferenceClickListener manualUpdateClick = preference -> { - Toast.makeText(getContext(), R.string.checking_updates_toast, Toast.LENGTH_SHORT).show(); NewVersionWorker.enqueueNewVersionCheckingWork(requireContext(), true); return true; }; diff --git a/app/src/main/res/layout/error_panel.xml b/app/src/main/res/layout/error_panel.xml index e294037da..dd48010c1 100644 --- a/app/src/main/res/layout/error_panel.xml +++ b/app/src/main/res/layout/error_panel.xml @@ -71,6 +71,20 @@ android:visibility="gone" tools:visibility="visible" /> +