jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/338290 )
Change subject: Prevent user from creating a list with an empty title
......................................................................
Prevent user from creating a list with an empty title
It's currently possible for a user to create a reading list with an empty
string as the title. When this happens, "Untitled" will be displayed as
the list title, but the true title will be an empty string, and pages will
disappear from the reading list almost immediately.
Let's prevent users from creating reading lists with empty titles.
Change-Id: If330328a60b60db96f5ccaa7af2237bcbc65a37d
---
M app/src/main/java/org/wikipedia/readinglist/ReadingListDialogs.java
M app/src/main/res/values-qq/strings.xml
M app/src/main/res/values/strings.xml
3 files changed, 28 insertions(+), 15 deletions(-)
Approvals:
Dbrant: Looks good to me, approved
jenkins-bot: Verified
diff --git
a/app/src/main/java/org/wikipedia/readinglist/ReadingListDialogs.java
b/app/src/main/java/org/wikipedia/readinglist/ReadingListDialogs.java
index 08a3719..89686df 100644
--- a/app/src/main/java/org/wikipedia/readinglist/ReadingListDialogs.java
+++ b/app/src/main/java/org/wikipedia/readinglist/ReadingListDialogs.java
@@ -13,6 +13,7 @@
import android.view.WindowManager;
import android.widget.EditText;
+import org.apache.commons.lang3.StringUtils;
import org.wikipedia.R;
import org.wikipedia.util.DeviceUtil;
import org.wikipedia.util.DimenUtil;
@@ -27,8 +28,9 @@
}
private interface TitleTextCallback {
- void onMatchesExistingTitle(@NonNull String title);
- void onDoesNotMatchExistingTitle();
+ void onEntryMatchesExistingTitle(@NonNull String title);
+ void onEntryEmpty();
+ void onEntryOk();
}
private static class TitleTextWatcher implements TextWatcher {
@@ -44,13 +46,17 @@
}
@Override public void onTextChanged(CharSequence charSequence, int i,
int i1, int i2) {
- for (String title : titles) {
- if (title.equals(charSequence.toString())) {
- cb.onMatchesExistingTitle(title);
- return;
- }
+ if (StringUtils.isEmpty(charSequence)) {
+ cb.onEntryEmpty();
+ return;
}
- cb.onDoesNotMatchExistingTitle();
+
+ if (titles.contains(charSequence.toString())) {
+ cb.onEntryMatchesExistingTitle(charSequence.toString());
+ return;
+ }
+
+ cb.onEntryOk();
}
@Override public void afterTextChanged(Editable editable) {
@@ -96,18 +102,23 @@
@Override
public void onShow(DialogInterface dialogInterface) {
titleView.addTextChangedListener(new
TitleTextWatcher(otherTitles, new TitleTextCallback() {
- @Override
- public void onMatchesExistingTitle(@NonNull String title) {
-
titleContainer.setError(context.getString(R.string.reading_list_title_exists,
title));
-
alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(false);
-
+ @Override public void onEntryMatchesExistingTitle(@NonNull
String title) {
+
setError(context.getString(R.string.reading_list_title_exists, title));
}
- @Override
- public void onDoesNotMatchExistingTitle() {
+ @Override public void onEntryEmpty() {
+
setError(context.getString(R.string.reading_list_entry_empty));
+ }
+
+ @Override public void onEntryOk() {
titleContainer.setError(null);
alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(true);
}
+
+ private void setError(@NonNull String error) {
+ titleContainer.setError(error);
+
alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(false);
+ }
}));
titleView.setText(readingList.getTitle());
diff --git a/app/src/main/res/values-qq/strings.xml
b/app/src/main/res/values-qq/strings.xml
index 1e8e3d5..394b474 100644
--- a/app/src/main/res/values-qq/strings.xml
+++ b/app/src/main/res/values-qq/strings.xml
@@ -381,6 +381,7 @@
<string name="reading_list_save_to">Menu item label for saving the current
article to a reading list.</string>
<string name="reading_list_create_new">Dialog title for creating a new
reading list.</string>
<string name="reading_list_title_exists">Error text shown when a user
attempts to create a new list with the same title as an existing list. The
\"%s\" symbol is replaced with the title of the existing list.</string>
+ <string name="reading_list_entry_empty">An error message shown to the user
when the user attempts to create a reading list with an empty title.</string>
<string name="reading_list_added_to_named">Message shown when an article is
added to a reading list. The \"%s\" symbol is replaced with the name of the
reading list.</string>
<string name="reading_list_added_to_unnamed">Message shown when an article
is added to an untitled reading list.</string>
<string name="reading_list_already_exists">Message shown when an article
already exists in the selected reading list.</string>
diff --git a/app/src/main/res/values/strings.xml
b/app/src/main/res/values/strings.xml
index b9a28ef..09f6703 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -269,6 +269,7 @@
<string name="reading_list_save_to">Save to reading list</string>
<string name="reading_list_create_new">Create new</string>
<string name="reading_list_title_exists">Reading list \"%s\" already
exists.</string>
+ <string name="reading_list_entry_empty">Please enter a title.</string>
<string name="reading_list_added_to_named">Added to %s.</string>
<string name="reading_list_added_to_unnamed">Added to reading
list.</string>
<string name="reading_list_already_exists">This article is already in that
list.</string>
--
To view, visit https://gerrit.wikimedia.org/r/338290
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: If330328a60b60db96f5ccaa7af2237bcbc65a37d
Gerrit-PatchSet: 2
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mholloway <[email protected]>
Gerrit-Reviewer: Dbrant <[email protected]>
Gerrit-Reviewer: Niedzielski <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits