Support for syncing contact colors and block lists

Closes #5638
// FREEBIE
This commit is contained in:
Moxie Marlinspike
2016-08-26 16:53:23 -07:00
parent 0a569676f7
commit 32f5bd5336
9 changed files with 194 additions and 7 deletions

View File

@@ -11,6 +11,7 @@ import android.support.annotation.Nullable;
import android.util.Log;
import org.thoughtcrime.securesms.color.MaterialColor;
import org.thoughtcrime.securesms.recipients.RecipientFactory;
import org.thoughtcrime.securesms.recipients.Recipients;
import org.thoughtcrime.securesms.util.Util;
import org.whispersystems.libsignal.util.guava.Optional;
@@ -80,6 +81,10 @@ public class RecipientPreferenceDatabase extends Database {
return cursor;
}
public BlockedReader readerForBlocked(Cursor cursor) {
return new BlockedReader(context, cursor);
}
public Optional<RecipientsPreferences> getRecipientsPreferences(@NonNull long[] recipients) {
Arrays.sort(recipients);
@@ -255,4 +260,28 @@ public class RecipientPreferenceDatabase extends Database {
return expireMessages;
}
}
public static class BlockedReader {
private final Context context;
private final Cursor cursor;
public BlockedReader(Context context, Cursor cursor) {
this.context = context;
this.cursor = cursor;
}
public @NonNull Recipients getCurrent() {
String recipientIds = cursor.getString(cursor.getColumnIndexOrThrow(RECIPIENT_IDS));
return RecipientFactory.getRecipientsForIds(context, recipientIds, false);
}
public @Nullable Recipients getNext() {
if (!cursor.moveToNext()) {
return null;
}
return getCurrent();
}
}
}