[MediaWiki-commits] [Gerrit] apps...wikipedia[master]: Fix issues with reading lists.

2017-10-13 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/384054 )

Change subject: Fix issues with reading lists.
..


Fix issues with reading lists.

- Harden the outer-loop logic of the SavedPageSyncService, where it now
  re-queries the db to get an updated status of the current page after the
  long-running operation of saving the page contents is finished. This way,
  if the page was deleted in the meantime, or added to other lists, we
  won't overwrite its db row with a stale copy.

- No longer update reading list details (over the network) from each
  individual ItemView. This can cause race conditions when an ItemView is
  part of a RecyclerView and gets invalidated based on Window-level
  events. Fetching from the network is now handled at the Fragment level,
  where the lifecycle is more controlled.

- Fix adding an article to a reading list from the long-press menu in
  PageFragment. (It was incorrectly adding the current article, not the
  link.)

Bug: T177292
Bug: T177307
Change-Id: Iabde86c657e44de58c7669ff26e8fd4ce040b91a
---
M app/src/main/java/org/wikipedia/page/PageContainerLongPressHandler.java
M app/src/main/java/org/wikipedia/page/PageFragment.java
M app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java
M app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java
M app/src/main/java/org/wikipedia/readinglist/ReadingListHeaderView.java
M app/src/main/java/org/wikipedia/readinglist/ReadingListItemView.java
M app/src/main/java/org/wikipedia/readinglist/ReadingLists.java
M app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java
M 
app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageDao.java
M app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
10 files changed, 103 insertions(+), 51 deletions(-)

Approvals:
  jenkins-bot: Verified
  Cooltey: Looks good to me, approved



diff --git 
a/app/src/main/java/org/wikipedia/page/PageContainerLongPressHandler.java 
b/app/src/main/java/org/wikipedia/page/PageContainerLongPressHandler.java
index 26ccfbb..3a71ad9 100644
--- a/app/src/main/java/org/wikipedia/page/PageContainerLongPressHandler.java
+++ b/app/src/main/java/org/wikipedia/page/PageContainerLongPressHandler.java
@@ -43,7 +43,7 @@
 
 @Override
 public void onAddToList(PageTitle title, 
AddToReadingListDialog.InvokeSource source) {
-fragment.addToReadingList(source);
+fragment.addToReadingList(title, source);
 }
 
 @Override
diff --git a/app/src/main/java/org/wikipedia/page/PageFragment.java 
b/app/src/main/java/org/wikipedia/page/PageFragment.java
index 0a659c4..f44ef1a 100755
--- a/app/src/main/java/org/wikipedia/page/PageFragment.java
+++ b/app/src/main/java/org/wikipedia/page/PageFragment.java
@@ -205,7 +205,7 @@
 new ReadingListBookmarkMenu(tabLayout, new 
ReadingListBookmarkMenu.Callback() {
 @Override
 public void onAddRequest(@Nullable ReadingListPage page) {
-
addToReadingList(AddToReadingListDialog.InvokeSource.BOOKMARK_BUTTON);
+addToReadingList(getTitle(), 
AddToReadingListDialog.InvokeSource.BOOKMARK_BUTTON);
 }
 
 @Override
@@ -216,7 +216,7 @@
 }
 }).show(getTitle());
 } else {
-
addToReadingList(AddToReadingListDialog.InvokeSource.BOOKMARK_BUTTON);
+addToReadingList(getTitle(), 
AddToReadingListDialog.InvokeSource.BOOKMARK_BUTTON);
 }
 }
 
@@ -766,7 +766,7 @@
 sharePageLink();
 return true;
 case R.id.menu_page_add_to_list:
-
addToReadingList(AddToReadingListDialog.InvokeSource.PAGE_OVERFLOW_MENU);
+addToReadingList(getTitle(), 
AddToReadingListDialog.InvokeSource.PAGE_OVERFLOW_MENU);
 return true;
 case R.id.menu_page_find_in_page:
 showFindInPage();
@@ -1313,10 +1313,10 @@
 }
 }
 
-public void addToReadingList(@NonNull AddToReadingListDialog.InvokeSource 
source) {
+public void addToReadingList(@NonNull PageTitle title, @NonNull 
AddToReadingListDialog.InvokeSource source) {
 Callback callback = callback();
 if (callback != null) {
-callback.onPageAddToReadingList(getTitle(), source);
+callback.onPageAddToReadingList(title, source);
 }
 }
 
diff --git 
a/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java 
b/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java
index f122a8c..76c8912 100644
--- a/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java
+++ b/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java
@@ -172,6 +172,22 @@
 readingLists.set(row

[MediaWiki-commits] [Gerrit] apps...wikipedia[master]: Fix issues with reading lists.

2017-10-13 Thread Dbrant (Code Review)
Dbrant has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/384054 )

Change subject: Fix issues with reading lists.
..

Fix issues with reading lists.

- Harden the outer-loop logic of the SavedPageSyncService, where it now
  re-queries the db to get an updated status of the current page after the
  long-running operation of saving the page contents is finished. This way,
  if the page was deleted in the meantime, or added to other lists, we
  won't overwrite its db row with a stale copy.

- No longer update reading list details (over the network) from each
  individual ItemView. This can cause race conditions when an ItemView is
  part of a RecyclerView and gets invalidated based on Window-level
  events. Fetching from the network is now handled at the Fragment level,
  where the lifecycle is more controlled.

- Fix adding an article to a reading list from the long-press menu in
  PageFragment. (It was incorrectly adding the current article, not the
  link.)

Bug: T177292
Bug: T177307
Change-Id: Iabde86c657e44de58c7669ff26e8fd4ce040b91a
---
M app/src/main/java/org/wikipedia/page/PageContainerLongPressHandler.java
M app/src/main/java/org/wikipedia/page/PageFragment.java
M app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java
M app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java
M app/src/main/java/org/wikipedia/readinglist/ReadingListHeaderView.java
M app/src/main/java/org/wikipedia/readinglist/ReadingListItemView.java
M app/src/main/java/org/wikipedia/readinglist/ReadingLists.java
M app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java
M 
app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageDao.java
M app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
10 files changed, 103 insertions(+), 51 deletions(-)


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

diff --git 
a/app/src/main/java/org/wikipedia/page/PageContainerLongPressHandler.java 
b/app/src/main/java/org/wikipedia/page/PageContainerLongPressHandler.java
index 26ccfbb..3a71ad9 100644
--- a/app/src/main/java/org/wikipedia/page/PageContainerLongPressHandler.java
+++ b/app/src/main/java/org/wikipedia/page/PageContainerLongPressHandler.java
@@ -43,7 +43,7 @@
 
 @Override
 public void onAddToList(PageTitle title, 
AddToReadingListDialog.InvokeSource source) {
-fragment.addToReadingList(source);
+fragment.addToReadingList(title, source);
 }
 
 @Override
diff --git a/app/src/main/java/org/wikipedia/page/PageFragment.java 
b/app/src/main/java/org/wikipedia/page/PageFragment.java
index 0a659c4..f44ef1a 100755
--- a/app/src/main/java/org/wikipedia/page/PageFragment.java
+++ b/app/src/main/java/org/wikipedia/page/PageFragment.java
@@ -205,7 +205,7 @@
 new ReadingListBookmarkMenu(tabLayout, new 
ReadingListBookmarkMenu.Callback() {
 @Override
 public void onAddRequest(@Nullable ReadingListPage page) {
-
addToReadingList(AddToReadingListDialog.InvokeSource.BOOKMARK_BUTTON);
+addToReadingList(getTitle(), 
AddToReadingListDialog.InvokeSource.BOOKMARK_BUTTON);
 }
 
 @Override
@@ -216,7 +216,7 @@
 }
 }).show(getTitle());
 } else {
-
addToReadingList(AddToReadingListDialog.InvokeSource.BOOKMARK_BUTTON);
+addToReadingList(getTitle(), 
AddToReadingListDialog.InvokeSource.BOOKMARK_BUTTON);
 }
 }
 
@@ -766,7 +766,7 @@
 sharePageLink();
 return true;
 case R.id.menu_page_add_to_list:
-
addToReadingList(AddToReadingListDialog.InvokeSource.PAGE_OVERFLOW_MENU);
+addToReadingList(getTitle(), 
AddToReadingListDialog.InvokeSource.PAGE_OVERFLOW_MENU);
 return true;
 case R.id.menu_page_find_in_page:
 showFindInPage();
@@ -1313,10 +1313,10 @@
 }
 }
 
-public void addToReadingList(@NonNull AddToReadingListDialog.InvokeSource 
source) {
+public void addToReadingList(@NonNull PageTitle title, @NonNull 
AddToReadingListDialog.InvokeSource source) {
 Callback callback = callback();
 if (callback != null) {
-callback.onPageAddToReadingList(getTitle(), source);
+callback.onPageAddToReadingList(title, source);
 }
 }
 
diff --git 
a/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java 
b/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java
index f122a8c..76c8912 100644
--- a/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java
+++ b/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java
@@ -172,6 +172,22 @@
 readingLists.s