Niedzielski has uploaded a new change for review.
https://gerrit.wikimedia.org/r/264852
Change subject: Don't show the retry button for 404 errors
......................................................................
Don't show the retry button for 404 errors
Replace the retry button with a "back to Main Page" button for HTTP
errors that are unrecoverable by retrying. The ticket only describes
removing the retry button but the dead end experience of an error with
no obvious way out feels overwhelming.
Bug: T120280
Change-Id: I44145e1a521e1d5f4de9793b1b22f8903ac9fdd8
---
M app/src/main/java/org/wikipedia/page/PageFragment.java
M app/src/main/java/org/wikipedia/views/WikiErrorView.java
M app/src/main/res/layout/custom_error_view.xml
M app/src/main/res/values-qq/strings.xml
M app/src/main/res/values/strings.xml
5 files changed, 36 insertions(+), 15 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/52/264852/1
diff --git a/app/src/main/java/org/wikipedia/page/PageFragment.java
b/app/src/main/java/org/wikipedia/page/PageFragment.java
index 28941e5..7283a9d 100755
--- a/app/src/main/java/org/wikipedia/page/PageFragment.java
+++ b/app/src/main/java/org/wikipedia/page/PageFragment.java
@@ -325,6 +325,12 @@
loadPage(model.getTitleOriginal(), model.getCurEntry(),
PageLoadStrategy.Cache.FALLBACK, false);
}
});
+ errorView.setBackClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ getPageActivity().loadMainPageInCurrentTab();
+ }
+ });
editHandler = new EditHandler(this, bridge);
pageLoadStrategy.setEditHandler(editHandler);
diff --git a/app/src/main/java/org/wikipedia/views/WikiErrorView.java
b/app/src/main/java/org/wikipedia/views/WikiErrorView.java
index c2d8eca..fa59c2b 100644
--- a/app/src/main/java/org/wikipedia/views/WikiErrorView.java
+++ b/app/src/main/java/org/wikipedia/views/WikiErrorView.java
@@ -4,17 +4,22 @@
import org.wikipedia.util.ThrowableUtil;
import android.content.Context;
import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.util.AttributeSet;
-import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.TextView;
-public class WikiErrorView extends FrameLayout {
+import butterknife.Bind;
+import butterknife.ButterKnife;
- private TextView errorTextView;
- private Button retryButton;
- private TextView messageTextView;
+public class WikiErrorView extends FrameLayout {
+ @Bind(R.id.error_text) TextView errorTextView;
+ @Bind(R.id.retry_button) Button button;
+ @Bind(R.id.server_message_text) TextView messageTextView;
+
+ @Nullable private OnClickListener retryListener;
+ @Nullable private OnClickListener backListener;
public WikiErrorView(Context context) {
this(context, null);
@@ -27,23 +32,32 @@
public WikiErrorView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
inflate(context, R.layout.custom_error_view, this);
-
- errorTextView = (TextView) findViewById(R.id.error_text);
- retryButton = (Button) findViewById(R.id.retry_button);
- messageTextView = (TextView) findViewById(R.id.server_message_text);
+ ButterKnife.bind(this);
}
- public void setRetryButtonVisible(boolean visible) {
- retryButton.setVisibility(visible ? View.VISIBLE : View.GONE);
+ public void setRetryClickListener(@Nullable OnClickListener listener) {
+ retryListener = listener;
}
- public void setRetryClickListener(OnClickListener listener) {
- retryButton.setOnClickListener(listener);
+ public void setBackClickListener(@Nullable OnClickListener listener) {
+ backListener = listener;
}
public void setError(@NonNull Throwable e) {
ThrowableUtil.AppError error = ThrowableUtil.getAppError(getContext(),
e);
errorTextView.setText(error.getError());
messageTextView.setText(error.getDetail());
+ updateButton(isErrorRetryable(error));
+ }
+
+ private void updateButton(boolean retryable) {
+ OnClickListener listener = retryable ? retryListener : backListener;
+ button.setVisibility(listener == null ? GONE : VISIBLE);
+ button.setText(retryable ? R.string.page_error_retry :
R.string.page_error_back_to_main);
+ button.setOnClickListener(listener);
+ }
+
+ private boolean isErrorRetryable(@NonNull ThrowableUtil.AppError error) {
+ return !error.getDetail().contains("404");
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/custom_error_view.xml
b/app/src/main/res/layout/custom_error_view.xml
index ffd69a2..0062f04 100644
--- a/app/src/main/res/layout/custom_error_view.xml
+++ b/app/src/main/res/layout/custom_error_view.xml
@@ -28,8 +28,7 @@
android:id="@+id/retry_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
- android:text="@string/page_error_retry"/>
+ android:layout_gravity="center_horizontal" />
<TextView
android:id="@+id/server_message_text"
diff --git a/app/src/main/res/values-qq/strings.xml
b/app/src/main/res/values-qq/strings.xml
index 1a91320..1ed5e4f 100644
--- a/app/src/main/res/values-qq/strings.xml
+++ b/app/src/main/res/values-qq/strings.xml
@@ -15,6 +15,7 @@
<string name="error_network_error">Error message shown when network cannot
be reached when loading a page</string>
<string name="page_error_retry">Text for button that retries page loading
when tapped.
{{Identical|Retry}}</string>
+ <string name="page_error_back_to_main">Text for button that goes to the wiki
Main Page when tapped.</string>
<string name="menu_clear_all_history">Menu item text for clearing your
reading history.
{{Identical|Clear history}}</string>
<string name="menu_clear_all_saved_pages">Clear is an imperative verb. This
is an action that clears all saved pages.</string>
diff --git a/app/src/main/res/values/strings.xml
b/app/src/main/res/values/strings.xml
index 32a9ca2..607ac26 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -11,6 +11,7 @@
<string name="nav_item_history">History</string>
<string name="error_network_error">Cannot connect to the Internet.</string>
<string name="page_error_retry">Retry</string>
+ <string name="page_error_back_to_main">Back to Main Page</string>
<string name="menu_clear_all_history">Clear history</string>
<string name="menu_clear_all_saved_pages">Clear saved pages</string>
<string name="page_does_not_exist_error">This page does not exist.</string>
--
To view, visit https://gerrit.wikimedia.org/r/264852
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I44145e1a521e1d5f4de9793b1b22f8903ac9fdd8
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits