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

Reply via email to