mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-26 11:51:10 +01:00
Simplify storing storage-service-specific recipient values.
This gives us the ability to separate things we need for the Recipient class from things we only need for storage syncing. Not only does this simplify the storage service model building code (i.e. we no longer need to pass around a set of archived recipients), but it also eliminates a join on the Identity table for building regular recipients, which should help perf.
This commit is contained in:
@@ -26,6 +26,10 @@ public final class CursorUtil {
|
||||
return requireInt(cursor, column) != 0;
|
||||
}
|
||||
|
||||
public static byte[] requireBlob(@NonNull Cursor cursor, @NonNull String column) {
|
||||
return cursor.getBlob(cursor.getColumnIndexOrThrow(column));
|
||||
}
|
||||
|
||||
public static Optional<String> getString(@NonNull Cursor cursor, @NonNull String column) {
|
||||
if (cursor.getColumnIndex(column) < 0) {
|
||||
return Optional.absent();
|
||||
@@ -41,4 +45,20 @@ public final class CursorUtil {
|
||||
return Optional.of(requireInt(cursor, column));
|
||||
}
|
||||
}
|
||||
|
||||
public static Optional<Boolean> getBoolean(@NonNull Cursor cursor, @NonNull String column) {
|
||||
if (cursor.getColumnIndex(column) < 0) {
|
||||
return Optional.absent();
|
||||
} else {
|
||||
return Optional.of(requireBoolean(cursor, column));
|
||||
}
|
||||
}
|
||||
|
||||
public static Optional<byte[]> getBlob(@NonNull Cursor cursor, @NonNull String column) {
|
||||
if (cursor.getColumnIndex(column) < 0) {
|
||||
return Optional.absent();
|
||||
} else {
|
||||
return Optional.fromNullable(requireBlob(cursor, column));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,8 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.WorkerThread;
|
||||
|
||||
import org.signal.zkgroup.InvalidInputException;
|
||||
import org.signal.zkgroup.groups.GroupMasterKey;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.database.DatabaseFactory;
|
||||
import org.thoughtcrime.securesms.database.GroupDatabase;
|
||||
@@ -66,6 +68,14 @@ public final class GroupUtil {
|
||||
return Optional.absent();
|
||||
}
|
||||
|
||||
public static @NonNull GroupMasterKey requireMasterKey(@NonNull byte[] masterKey) {
|
||||
try {
|
||||
return new GroupMasterKey(masterKey);
|
||||
} catch (InvalidInputException e) {
|
||||
throw new AssertionError(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static @NonNull GroupDescription getNonV2GroupDescription(@NonNull Context context, @Nullable String encodedGroup) {
|
||||
if (encodedGroup == null) {
|
||||
return new GroupDescription(context, null);
|
||||
|
||||
Reference in New Issue
Block a user