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

Change subject: Fix: update reading list UI on change
......................................................................

Fix: update reading list UI on change

- Move ReadingListSyncEvent postage from a callback in
  ReadingListSynchronizer to the end of a sync in SavedPageSyncService.
  This will cause the event to be posted whenever a page is added,
  removed, or updated at the source which appears to be in line with the
  original intent of the event.

- Register for sync events in ReadingListFragment. ReadingListsFragment
  (plural) already subscribes to these events and the choice to use bus
  events over a CursorLoader was discussed here:

    https://gerrit.wikimedia.org/r/#/c/341620/
    https://gerrit.wikimedia.org/r/#/c/338107/

Bug: T162267
Change-Id: Icd19c8ccd0219e9c688fed8b1100b0472af540d2
---
M app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java
M app/src/main/java/org/wikipedia/readinglist/sync/ReadingListSynchronizer.java
M app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
3 files changed, 22 insertions(+), 8 deletions(-)


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

diff --git 
a/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java 
b/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java
index 44b08fe..cf88509 100644
--- a/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java
+++ b/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java
@@ -26,8 +26,11 @@
 import android.view.ViewGroup;
 import android.widget.TextView;
 
+import com.squareup.otto.Subscribe;
+
 import org.wikipedia.Constants;
 import org.wikipedia.R;
+import org.wikipedia.WikipediaApp;
 import org.wikipedia.analytics.ReadingListsFunnel;
 import org.wikipedia.concurrency.CallbackTask;
 import org.wikipedia.history.HistoryEntry;
@@ -39,6 +42,7 @@
 import org.wikipedia.readinglist.page.ReadingListPage;
 import org.wikipedia.readinglist.page.database.ReadingListDaoProxy;
 import org.wikipedia.readinglist.page.database.ReadingListPageDao;
+import org.wikipedia.readinglist.sync.ReadingListSyncEvent;
 import org.wikipedia.readinglist.sync.ReadingListSynchronizer;
 import org.wikipedia.settings.Prefs;
 import org.wikipedia.util.FeedbackUtil;
@@ -74,6 +78,7 @@
     @BindView(R.id.search_empty_view) SearchEmptyView searchEmptyView;
     private Unbinder unbinder;
 
+    @NonNull private final EventBusMethods eventBusMethods = new 
EventBusMethods();
     @Nullable private ReadingList readingList;
     @Nullable private String readingListTitle;
     private ReadingListPageItemAdapter adapter = new 
ReadingListPageItemAdapter();
@@ -135,6 +140,8 @@
         readingListTitle = getArguments().getString(EXTRA_READING_LIST_TITLE);
         updateReadingListData();
 
+        WikipediaApp.getInstance().getBus().register(eventBusMethods);
+
         return view;
     }
 
@@ -145,6 +152,8 @@
     }
 
     @Override public void onDestroyView() {
+        WikipediaApp.getInstance().getBus().unregister(eventBusMethods);
+
         readingList = null;
         readingLists.set(Collections.<ReadingList>emptyList());
         recyclerView.setAdapter(null);
@@ -718,4 +727,12 @@
             toggleOffline(page);
         }
     }
+
+    private class EventBusMethods {
+        @Subscribe public void on(@NonNull ReadingListSyncEvent event) {
+            if (isAdded()) {
+                update();
+            }
+        }
+    }
 }
diff --git 
a/app/src/main/java/org/wikipedia/readinglist/sync/ReadingListSynchronizer.java 
b/app/src/main/java/org/wikipedia/readinglist/sync/ReadingListSynchronizer.java
index 74af9a0..0051fa9 100644
--- 
a/app/src/main/java/org/wikipedia/readinglist/sync/ReadingListSynchronizer.java
+++ 
b/app/src/main/java/org/wikipedia/readinglist/sync/ReadingListSynchronizer.java
@@ -2,7 +2,6 @@
 
 import android.content.Intent;
 import android.os.Handler;
-import android.os.Looper;
 import android.support.annotation.NonNull;
 
 import org.wikipedia.WikipediaApp;
@@ -95,7 +94,6 @@
                             reconcileAsRightJoin(remoteReadingLists);
                             
Prefs.setReadingListSyncRev(remoteReadingLists.rev());
                             
WikipediaApp.getInstance().getOnboardingStateMachine().setReadingListTutorial();
-                            postEvent(new ReadingListSyncEvent());
                         } else {
                             L.d("Local and remote reading lists are in sync.");
                         }
@@ -123,12 +121,6 @@
 
     private void bumpRev() {
         Prefs.setReadingListSyncRev(Prefs.getReadingListSyncRev() + 1);
-    }
-
-    private void postEvent(@NonNull Object event) {
-        // Note: this method posts from a background thread but subscribers 
expect events to be
-        // received on the main thead.
-        WikipediaApp.getInstance().getBus().post(event);
     }
 
     private void reconcileAsRightJoin(@NonNull RemoteReadingLists 
remoteReadingLists) {
diff --git 
a/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java 
b/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
index ca6ccc8..fd80cc9 100644
--- a/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
+++ b/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
@@ -20,6 +20,7 @@
 import org.wikipedia.readinglist.page.ReadingListPageRow;
 import org.wikipedia.readinglist.page.database.ReadingListPageDao;
 import org.wikipedia.readinglist.page.database.disk.ReadingListPageDiskRow;
+import org.wikipedia.readinglist.sync.ReadingListSyncEvent;
 import org.wikipedia.util.DimenUtil;
 import org.wikipedia.util.FileUtil;
 import org.wikipedia.util.UriUtil;
@@ -78,6 +79,10 @@
             }
         }
         saveNewEntries(queue);
+
+        // Note: this method posts from a background thread but subscribers 
expect events to be
+        // received on the main thead.
+        WikipediaApp.getInstance().getBus().post(new ReadingListSyncEvent());
     }
 
     private void deleteRow(@NonNull ReadingListPageDiskRow row) {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Icd19c8ccd0219e9c688fed8b1100b0472af540d2
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <sniedziel...@wikimedia.org>
Gerrit-Reviewer: Sniedzielski <sniedziel...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to