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