jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/361081 )
Change subject: Reconcile synced reading lists when a different user logs in. ...................................................................... Reconcile synced reading lists when a different user logs in. Bug: T162763 Change-Id: I50f6815a745de942bfb4f368d7bbd2c790e76435 --- M app/src/main/java/org/wikipedia/readinglist/sync/ReadingListSynchronizer.java M app/src/main/java/org/wikipedia/settings/Prefs.java M app/src/main/res/values/preference_keys.xml 3 files changed, 31 insertions(+), 3 deletions(-) Approvals: jenkins-bot: Verified Mholloway: Looks good to me, approved 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 d5c0bb4..db95513 100644 --- a/app/src/main/java/org/wikipedia/readinglist/sync/ReadingListSynchronizer.java +++ b/app/src/main/java/org/wikipedia/readinglist/sync/ReadingListSynchronizer.java @@ -3,6 +3,7 @@ import android.content.Intent; import android.os.Handler; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import org.wikipedia.WikipediaApp; import org.wikipedia.auth.AccountUtil; @@ -26,6 +27,7 @@ import org.wikipedia.util.log.L; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.concurrent.TimeUnit; @@ -91,7 +93,13 @@ } } - if ((remoteReadingLists == null) || (remoteReadingLists.rev() < localRev)) { + if (Prefs.hasReadingListsCurrentUser() + && !Prefs.isReadingListsCurrentUser(AccountUtil.getUserName())) { + reconcileAsRightJoin(remoteReadingLists); + if (remoteReadingLists != null) { + Prefs.setReadingListSyncRev(remoteReadingLists.rev()); + } + } else if ((remoteReadingLists == null) || (remoteReadingLists.rev() < localRev)) { if (localRev == 0) { // If this is the first time we're syncing, bump the rev explicitly. bumpRev(); @@ -110,6 +118,7 @@ deleteRemoteReadingLists(); } } + Prefs.setReadingListsCurrentUser(AccountUtil.getUserName()); } private void deleteRemoteReadingLists() { @@ -140,9 +149,10 @@ Prefs.setReadingListSyncRev(Prefs.getReadingListSyncRev() + 1); } - private void reconcileAsRightJoin(@NonNull RemoteReadingLists remoteReadingLists) { + private void reconcileAsRightJoin(@Nullable RemoteReadingLists remoteReadingLists) { List<ReadingList> localLists = ReadingListData.instance().queryMruLists(null); - List<RemoteReadingList> remoteLists = remoteReadingLists.lists(); + List<RemoteReadingList> remoteLists = remoteReadingLists == null + ? Collections.<RemoteReadingList>emptyList() : remoteReadingLists.lists(); // Remove any pages that already exist in local lists from remote lists. // At the end of this loop, whatever is left in remoteLists will be added. diff --git a/app/src/main/java/org/wikipedia/settings/Prefs.java b/app/src/main/java/org/wikipedia/settings/Prefs.java index 2d74d6f..67a7820 100644 --- a/app/src/main/java/org/wikipedia/settings/Prefs.java +++ b/app/src/main/java/org/wikipedia/settings/Prefs.java @@ -4,6 +4,7 @@ import android.support.annotation.IntRange; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.text.TextUtils; import com.google.gson.reflect.TypeToken; @@ -19,6 +20,7 @@ import org.wikipedia.page.tabs.Tab; import org.wikipedia.theme.Theme; import org.wikipedia.util.ReleaseUtil; +import org.wikipedia.util.StringUtil; import java.util.Collections; import java.util.HashMap; @@ -511,5 +513,20 @@ setBoolean(R.string.preference_key_initial_onboarding_enabled, enabled); } + public static void setReadingListsCurrentUser(@Nullable String userName) { + setString(R.string.preference_key_reading_lists_current_user_hash, + TextUtils.isEmpty(userName) ? "" : StringUtil.md5string(userName)); + } + + public static boolean hasReadingListsCurrentUser() { + return !TextUtils.isEmpty(getString(R.string.preference_key_reading_lists_current_user_hash, "")); + } + + public static boolean isReadingListsCurrentUser(@Nullable String userName) { + return !TextUtils.isEmpty(userName) + && getString(R.string.preference_key_reading_lists_current_user_hash, "") + .equals(StringUtil.md5string(userName)); + } + private Prefs() { } } diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml index 0506b19..1449bd4 100644 --- a/app/src/main/res/values/preference_keys.xml +++ b/app/src/main/res/values/preference_keys.xml @@ -56,4 +56,5 @@ <string name="preference_key_reading_list_login_reminder_enabled">readingListLoginReminder</string> <string name="preference_key_reading_lists_remote_delete_pending">readingListsRemoteDeletePending</string> <string name="preference_key_initial_onboarding_enabled">initialOnboardingEnabled</string> + <string name="preference_key_reading_lists_current_user_hash">readingListsCurrentUserHash</string> </resources> -- To view, visit https://gerrit.wikimedia.org/r/361081 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I50f6815a745de942bfb4f368d7bbd2c790e76435 Gerrit-PatchSet: 4 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Dbrant <dbr...@wikimedia.org> Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org> Gerrit-Reviewer: Mholloway <mhollo...@wikimedia.org> Gerrit-Reviewer: Niedzielski <sniedziel...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits