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 15343f53ddc..b41d3997ee0 100644 --- a/app/src/main/java/org/schabi/newpipe/error/ErrorPanelHelper.kt +++ b/app/src/main/java/org/schabi/newpipe/error/ErrorPanelHelper.kt @@ -30,6 +30,7 @@ import org.schabi.newpipe.ktx.animate import org.schabi.newpipe.ktx.isInterruptedCaused import org.schabi.newpipe.ktx.isNetworkRelated import org.schabi.newpipe.util.ServiceHelper +import org.schabi.newpipe.util.external_communication.ShareUtils import java.util.concurrent.TimeUnit class ErrorPanelHelper( @@ -52,6 +53,8 @@ class ErrorPanelHelper( errorPanelRoot.findViewById(R.id.error_action_button) private val errorRetryButton: Button = errorPanelRoot.findViewById(R.id.error_retry_button) + private val errorOpenInBrowserButton: Button = + errorPanelRoot.findViewById(R.id.error_open_in_browser) private var errorDisposable: Disposable? = null @@ -69,6 +72,7 @@ class ErrorPanelHelper( errorServiceExplanationTextView.isVisible = false errorActionButton.isVisible = false errorRetryButton.isVisible = false + errorOpenInBrowserButton.isVisible = false } fun showError(errorInfo: ErrorInfo) { @@ -99,6 +103,7 @@ class ErrorPanelHelper( } errorRetryButton.isVisible = true + showAndSetOpenInBrowserButtonAction(errorInfo) } else if (errorInfo.throwable is AccountTerminatedException) { errorTextView.setText(R.string.account_terminated) @@ -128,6 +133,7 @@ class ErrorPanelHelper( // show retry button only for content which is not unavailable or unsupported errorRetryButton.isVisible = true } + showAndSetOpenInBrowserButtonAction(errorInfo) } setRootVisible() @@ -145,6 +151,15 @@ class ErrorPanelHelper( errorActionButton.setOnClickListener(listener) } + fun showAndSetOpenInBrowserButtonAction( + errorInfo: ErrorInfo + ) { + errorOpenInBrowserButton.isVisible = true + errorOpenInBrowserButton.setOnClickListener { + ShareUtils.openUrlInBrowser(context, errorInfo.request, true) + } + } + fun showTextError(errorString: String) { ensureDefaultVisibility() diff --git a/app/src/main/res/layout/error_panel.xml b/app/src/main/res/layout/error_panel.xml index 03f47cc9909..e294037da9b 100644 --- a/app/src/main/res/layout/error_panel.xml +++ b/app/src/main/res/layout/error_panel.xml @@ -33,8 +33,8 @@ android:id="@+id/error_message_service_explanation_view" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:gravity="center" android:layout_marginTop="4dp" + android:gravity="center" android:text="@string/general_error" android:textSize="16sp" android:textStyle="italic" @@ -62,7 +62,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="4dp" - android:layout_marginBottom="8dp" android:text="@string/retry" android:textAlignment="center" android:textAllCaps="true" @@ -72,4 +71,19 @@ android:visibility="gone" tools:visibility="visible" /> +