Sharvaniharan has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/404059 )

Change subject: Show message when article limit is reached on reading lists
......................................................................

Show message when article limit is reached on reading lists

- 1000 articles is the limit per article, and users will be shown a message 
when trying to add >1000 articles.

Bug: T180230
Change-Id: I56b2c63f0ce5cbbfa210cca2ec10c94c6815736d
---
M app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java
M app/src/main/res/values-qq/strings.xml
M app/src/main/res/values/strings.xml
3 files changed, 24 insertions(+), 5 deletions(-)


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

diff --git 
a/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java 
b/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java
index ef18d78..c697357 100644
--- a/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java
+++ b/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java
@@ -69,6 +69,7 @@
     private CreateButtonClickListener createClickListener = new 
CreateButtonClickListener();
 
     private List<ReadingList> readingLists = new ArrayList<>();
+    public static final int MAX_ARTICLE_LIMIT = 1000;
 
     @Nullable private DialogInterface.OnDismissListener dismissListener;
     private ReadingListItemCallback listItemCallback = new 
ReadingListItemCallback();
@@ -215,14 +216,21 @@
                 String message;
                 if (exists) {
                     message = getString(R.string.reading_list_already_exists);
+                    showViewListSnackBar(readingList, message, true);
+
+                } else if (readingList.pages().size() >= MAX_ARTICLE_LIMIT) {
+                    message = 
String.format(getString(R.string.reading_list_article_limit_message), 
readingList.title());
+                    showViewListSnackBar(readingList, message, false);
+
                 } else {
                     message = 
String.format(getString(R.string.reading_list_added_to_named),
                             readingList.isDefault() ? 
getString(R.string.default_reading_list_name) : readingList.title());
                     new 
ReadingListsFunnel(title.getWikiSite()).logAddToList(readingList, 
readingLists.size(), invokeSource);
 
                     ReadingListDbHelper.instance().addPageToList(readingList, 
title, true);
+                    showViewListSnackBar(readingList, message, true);
+
                 }
-                showViewListSnackBar(readingList, message);
                 dismiss();
             }
         });
@@ -232,6 +240,11 @@
         if (titles.size() == 1) {
             addAndDismiss(readingList, titles.get(0));
             return;
+        }
+        if (readingList.pages().size() + titles.size() > MAX_ARTICLE_LIMIT) {
+            for (int i = MAX_ARTICLE_LIMIT - readingList.pages().size(); i < 
titles.size(); i++) {
+                titles.remove(i);
+            }
         }
         CallbackTask.execute(() -> 
ReadingListDbHelper.instance().addPagesToListIfNotExist(readingList, titles), 
new CallbackTask.DefaultCallback<Integer>() {
             @Override
@@ -247,15 +260,19 @@
                             readingList.isDefault() ? 
getString(R.string.default_reading_list_name) : readingList.title());
                     new ReadingListsFunnel().logAddToList(readingList, 
readingLists.size(), invokeSource);
                 }
-                showViewListSnackBar(readingList, message);
+                showViewListSnackBar(readingList, message, true);
                 dismiss();
             }
         });
     }
 
-    private void showViewListSnackBar(@NonNull final ReadingList list, 
@NonNull String message) {
-        FeedbackUtil.makeSnackbar(getActivity(), message, 
FeedbackUtil.LENGTH_DEFAULT)
-                .setAction(R.string.reading_list_added_view_button, v -> 
v.getContext().startActivity(ReadingListActivity.newIntent(v.getContext(), 
list))).show();
+    private void showViewListSnackBar(@NonNull final ReadingList list, 
@NonNull String message, boolean showActionButton) {
+        if (showActionButton) {
+            FeedbackUtil.makeSnackbar(getActivity(), message, 
FeedbackUtil.LENGTH_DEFAULT)
+                    .setAction(R.string.reading_list_added_view_button, v -> 
v.getContext().startActivity(ReadingListActivity.newIntent(v.getContext(), 
list))).show();
+        } else {
+            FeedbackUtil.makeSnackbar(getActivity(), message, 
FeedbackUtil.LENGTH_DEFAULT).show();
+        }
     }
 
     private class ReadingListItemCallback implements 
ReadingListItemView.Callback {
diff --git a/app/src/main/res/values-qq/strings.xml 
b/app/src/main/res/values-qq/strings.xml
index d2825a0..8e5cac6 100644
--- a/app/src/main/res/values-qq/strings.xml
+++ b/app/src/main/res/values-qq/strings.xml
@@ -369,6 +369,7 @@
   <string name="reading_list_saved_list_rename">\"%1$s\" _[string indicating 
that the list was created by user]</string>
   <string name="split_list_name">Name string for the newly created lists from 
the original large list that will be split. \"%1$s\" is the name of the 
original list followed by _ and \"%2$d\" being the postfix number</string>
   <string name="split_reading_list_message">Message shown to users with large 
reading lists, informing them that this update will enforce an upper limit of 
1000 articles per list and hence will be splitting already existing lists that 
contain more than 1000 articles</string>
+  <string name="reading_list_article_limit_message">Message shown to the users 
when the limit for maimum number of articles in a list is reached, informing 
them that they will not be able to add anymore to that list, named \"%s\" 
</string>
   <plurals name="reading_list_article_offline_message">
     <item quantity="one">Message shown when a single reading list article is 
made available for offline use.</item>
     <item quantity="other">Message shown when more than one reading list 
article is made available for offline use.</item>
diff --git a/app/src/main/res/values/strings.xml 
b/app/src/main/res/values/strings.xml
index 8e5c3a4..f33daf8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -394,6 +394,7 @@
     <string name="reading_list_saved_list_rename">%1$s (user created)</string>
     <string name="split_list_name">%1$s_%2$d</string>
     <string name="split_reading_list_message">There is a limit of 1000 
articles per synced reading list. Existing lists with more than this limit have 
been split into multiple lists.</string>
+    <string name="reading_list_article_limit_message">Can\'t add to this list. 
You\'ve reached the limit of 1,000 articles per list for %s.</string>
     <plurals name="reading_list_article_offline_message">
         <item quantity="one">This article will now be available offline.</item>
         <item quantity="other">These articles will now be available 
offline.</item>

-- 
To view, visit https://gerrit.wikimedia.org/r/404059
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I56b2c63f0ce5cbbfa210cca2ec10c94c6815736d
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Sharvaniharan <[email protected]>

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

Reply via email to