Mholloway has uploaded a new change for review. ( 
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, 30 insertions(+), 15 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/90/338290/1

diff --git 
a/app/src/main/java/org/wikipedia/readinglist/ReadingListDialogs.java 
b/app/src/main/java/org/wikipedia/readinglist/ReadingListDialogs.java
index 08a3719..b14242b 100644
--- a/app/src/main/java/org/wikipedia/readinglist/ReadingListDialogs.java
+++ b/app/src/main/java/org/wikipedia/readinglist/ReadingListDialogs.java
@@ -3,6 +3,7 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.support.annotation.NonNull;
+import android.support.annotation.StringRes;
 import android.support.design.widget.TextInputLayout;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.SwitchCompat;
@@ -13,9 +14,11 @@
 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;
+import org.wikipedia.util.StringUtil;
 
 import java.util.List;
 
@@ -27,8 +30,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 +48,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 +104,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: newchange
Gerrit-Change-Id: If330328a60b60db96f5ccaa7af2237bcbc65a37d
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mholloway <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to