Renamed database classes to table classes.

Because they're not databases. They're tables.
This commit is contained in:
Greyson Parrelli
2022-11-29 10:47:12 -05:00
committed by Cody Henthorne
parent b190f9495a
commit 7949996c5c
382 changed files with 3420 additions and 3464 deletions

View File

@@ -13,10 +13,10 @@ import com.annimon.stream.Stream;
import org.signal.core.util.ThreadUtil;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.DistributionListDatabase;
import org.thoughtcrime.securesms.database.GroupDatabase;
import org.thoughtcrime.securesms.database.GroupDatabase.GroupRecord;
import org.thoughtcrime.securesms.database.RecipientDatabase;
import org.thoughtcrime.securesms.database.DistributionListTables;
import org.thoughtcrime.securesms.database.GroupTable;
import org.thoughtcrime.securesms.database.GroupTable.GroupRecord;
import org.thoughtcrime.securesms.database.RecipientTable;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.database.model.DistributionListRecord;
import org.thoughtcrime.securesms.database.model.RecipientRecord;
@@ -41,20 +41,20 @@ public final class LiveRecipient {
private final LiveData<Recipient> observableLiveDataResolved;
private final Set<RecipientForeverObserver> observers;
private final Observer<Recipient> foreverObserver;
private final AtomicReference<Recipient> recipient;
private final RecipientDatabase recipientDatabase;
private final GroupDatabase groupDatabase;
private final DistributionListDatabase distributionListDatabase;
private final MutableLiveData<Object> refreshForceNotify;
private final AtomicReference<Recipient> recipient;
private final RecipientTable recipientTable;
private final GroupTable groupDatabase;
private final DistributionListTables distributionListTables;
private final MutableLiveData<Object> refreshForceNotify;
LiveRecipient(@NonNull Context context, @NonNull Recipient defaultRecipient) {
this.context = context.getApplicationContext();
this.liveData = new MutableLiveData<>(defaultRecipient);
this.recipient = new AtomicReference<>(defaultRecipient);
this.recipientDatabase = SignalDatabase.recipients();
this.groupDatabase = SignalDatabase.groups();
this.distributionListDatabase = SignalDatabase.distributionLists();
this.observers = new CopyOnWriteArraySet<>();
this.recipient = new AtomicReference<>(defaultRecipient);
this.recipientTable = SignalDatabase.recipients();
this.groupDatabase = SignalDatabase.groups();
this.distributionListTables = SignalDatabase.distributionLists();
this.observers = new CopyOnWriteArraySet<>();
this.foreverObserver = recipient -> {
ThreadUtil.postToMain(() -> {
for (RecipientForeverObserver o : observers) {
@@ -191,7 +191,7 @@ public final class LiveRecipient {
}
private @NonNull Recipient fetchAndCacheRecipientFromDisk(@NonNull RecipientId id) {
RecipientRecord record = recipientDatabase.getRecord(id);
RecipientRecord record = recipientTable.getRecord(id);
RecipientDetails details;
if (record.getGroupId() != null) {
details = getGroupRecipientDetails(record);
@@ -227,7 +227,7 @@ public final class LiveRecipient {
@WorkerThread
private @NonNull RecipientDetails getDistributionListRecipientDetails(@NonNull RecipientRecord record) {
DistributionListRecord groupRecord = distributionListDatabase.getList(Objects.requireNonNull(record.getDistributionListId()));
DistributionListRecord groupRecord = distributionListTables.getList(Objects.requireNonNull(record.getDistributionListId()));
// TODO [stories] We'll have to see what the perf is like for very large distribution lists. We may not be able to support fetching all the members.
if (groupRecord != null) {

View File

@@ -1,6 +1,5 @@
package org.thoughtcrime.securesms.recipients;
import android.annotation.SuppressLint;
import android.content.Context;
import android.database.Cursor;
@@ -12,10 +11,10 @@ import androidx.annotation.VisibleForTesting;
import org.signal.core.util.ThreadUtil;
import org.signal.core.util.concurrent.SignalExecutors;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.RecipientDatabase;
import org.thoughtcrime.securesms.database.RecipientDatabase.MissingRecipientException;
import org.thoughtcrime.securesms.database.RecipientTable;
import org.thoughtcrime.securesms.database.RecipientTable.MissingRecipientException;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.database.ThreadDatabase;
import org.thoughtcrime.securesms.database.ThreadTable;
import org.thoughtcrime.securesms.database.model.ThreadRecord;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.signal.core.util.CursorUtil;
@@ -41,7 +40,7 @@ public final class LiveRecipientCache {
private static final int CONTACT_CACHE_WARM_MAX = 50;
private final Context context;
private final RecipientDatabase recipientDatabase;
private final RecipientTable recipientTable;
private final Map<RecipientId, LiveRecipient> recipients;
private final LiveRecipient unknown;
private final Executor resolveExecutor;
@@ -55,9 +54,9 @@ public final class LiveRecipientCache {
@VisibleForTesting
public LiveRecipientCache(@NonNull Context context, @NonNull Executor executor) {
this.context = context.getApplicationContext();
this.recipientDatabase = SignalDatabase.recipients();
this.recipients = new LRUCache<>(CACHE_MAX);
this.context = context.getApplicationContext();
this.recipientTable = SignalDatabase.recipients();
this.recipients = new LRUCache<>(CACHE_MAX);
this.warmedUp = new AtomicBoolean(false);
this.localRecipientId = new AtomicReference<>(null);
this.unknown = new LiveRecipient(context, Recipient.UNKNOWN);
@@ -161,15 +160,15 @@ public final class LiveRecipientCache {
}
if (localAci != null) {
selfId = recipientDatabase.getByServiceId(localAci).orElse(null);
selfId = recipientTable.getByServiceId(localAci).orElse(null);
}
if (selfId == null && localE164 != null) {
selfId = recipientDatabase.getByE164(localE164).orElse(null);
selfId = recipientTable.getByE164(localE164).orElse(null);
}
if (selfId == null) {
selfId = recipientDatabase.getAndPossiblyMerge(localAci, localE164);
selfId = recipientTable.getAndPossiblyMerge(localAci, localE164);
}
synchronized (localRecipientId) {
@@ -213,10 +212,10 @@ public final class LiveRecipientCache {
Stopwatch stopwatch = new Stopwatch("recipient-warm-up");
SignalExecutors.BOUNDED.execute(() -> {
ThreadDatabase threadDatabase = SignalDatabase.threads();
List<Recipient> recipients = new ArrayList<>();
ThreadTable threadTable = SignalDatabase.threads();
List<Recipient> recipients = new ArrayList<>();
try (ThreadDatabase.Reader reader = threadDatabase.readerFor(threadDatabase.getRecentConversationList(THREAD_CACHE_WARM_MAX, false, false))) {
try (ThreadTable.Reader reader = threadTable.readerFor(threadTable.getRecentConversationList(THREAD_CACHE_WARM_MAX, false, false))) {
int i = 0;
ThreadRecord record = null;
@@ -235,7 +234,7 @@ public final class LiveRecipientCache {
try (Cursor cursor = SignalDatabase.recipients().getNonGroupContacts(false)) {
int count = 0;
while (cursor != null && cursor.moveToNext() && count < CONTACT_CACHE_WARM_MAX) {
RecipientId id = RecipientId.from(CursorUtil.requireLong(cursor, RecipientDatabase.ID));
RecipientId id = RecipientId.from(CursorUtil.requireLong(cursor, RecipientTable.ID));
Recipient.resolved(id);
count++;
}

View File

@@ -28,11 +28,11 @@ import org.thoughtcrime.securesms.contacts.avatars.TransparentContactPhoto;
import org.thoughtcrime.securesms.conversation.colors.AvatarColor;
import org.thoughtcrime.securesms.conversation.colors.ChatColors;
import org.thoughtcrime.securesms.conversation.colors.ChatColorsPalette;
import org.thoughtcrime.securesms.database.RecipientDatabase;
import org.thoughtcrime.securesms.database.RecipientDatabase.MentionSetting;
import org.thoughtcrime.securesms.database.RecipientDatabase.RegisteredState;
import org.thoughtcrime.securesms.database.RecipientDatabase.UnidentifiedAccessMode;
import org.thoughtcrime.securesms.database.RecipientDatabase.VibrateState;
import org.thoughtcrime.securesms.database.RecipientTable;
import org.thoughtcrime.securesms.database.RecipientTable.MentionSetting;
import org.thoughtcrime.securesms.database.RecipientTable.RegisteredState;
import org.thoughtcrime.securesms.database.RecipientTable.UnidentifiedAccessMode;
import org.thoughtcrime.securesms.database.RecipientTable.VibrateState;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.database.model.DistributionListId;
import org.thoughtcrime.securesms.database.model.ProfileAvatarFileDetails;
@@ -71,7 +71,7 @@ import java.util.stream.Collectors;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.schedulers.Schedulers;
import static org.thoughtcrime.securesms.database.RecipientDatabase.InsightsBannerTier;
import static org.thoughtcrime.securesms.database.RecipientTable.InsightsBannerTier;
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
public class Recipient {
@@ -230,7 +230,7 @@ public class Recipient {
throw new AssertionError("Unknown serviceId!");
}
RecipientDatabase db = SignalDatabase.recipients();
RecipientTable db = SignalDatabase.recipients();
RecipientId recipientId;
@@ -269,8 +269,8 @@ public class Recipient {
throw new AssertionError();
}
RecipientDatabase db = SignalDatabase.recipients();
RecipientId recipientId = db.getAndPossiblyMerge(serviceId, e164);
RecipientTable db = SignalDatabase.recipients();
RecipientId recipientId = db.getAndPossiblyMerge(serviceId, e164);
Recipient resolved = resolved(recipientId);
@@ -297,8 +297,8 @@ public class Recipient {
*/
@WorkerThread
public static @NonNull Recipient externalContact(@NonNull String identifier) {
RecipientDatabase db = SignalDatabase.recipients();
RecipientId id = null;
RecipientTable db = SignalDatabase.recipients();
RecipientId id = null;
if (UuidUtil.isUuid(identifier)) {
throw new AssertionError("UUIDs are not valid system contact identifiers!");
@@ -353,8 +353,8 @@ public class Recipient {
public static @NonNull Recipient external(@NonNull Context context, @NonNull String identifier) {
Preconditions.checkNotNull(identifier, "Identifier cannot be null!");
RecipientDatabase db = SignalDatabase.recipients();
RecipientId id = null;
RecipientTable db = SignalDatabase.recipients();
RecipientId id = null;
if (UuidUtil.isUuid(identifier)) {
ServiceId serviceId = ServiceId.parseOrThrow(identifier);

View File

@@ -10,11 +10,11 @@ import org.signal.libsignal.zkgroup.profiles.ExpiringProfileKeyCredential;
import org.thoughtcrime.securesms.badges.models.Badge;
import org.thoughtcrime.securesms.conversation.colors.AvatarColor;
import org.thoughtcrime.securesms.conversation.colors.ChatColors;
import org.thoughtcrime.securesms.database.RecipientDatabase.InsightsBannerTier;
import org.thoughtcrime.securesms.database.RecipientDatabase.MentionSetting;
import org.thoughtcrime.securesms.database.RecipientDatabase.RegisteredState;
import org.thoughtcrime.securesms.database.RecipientDatabase.UnidentifiedAccessMode;
import org.thoughtcrime.securesms.database.RecipientDatabase.VibrateState;
import org.thoughtcrime.securesms.database.RecipientTable.InsightsBannerTier;
import org.thoughtcrime.securesms.database.RecipientTable.MentionSetting;
import org.thoughtcrime.securesms.database.RecipientTable.RegisteredState;
import org.thoughtcrime.securesms.database.RecipientTable.UnidentifiedAccessMode;
import org.thoughtcrime.securesms.database.RecipientTable.VibrateState;
import org.thoughtcrime.securesms.database.model.DistributionListId;
import org.thoughtcrime.securesms.database.model.ProfileAvatarFileDetails;
import org.thoughtcrime.securesms.database.model.RecipientRecord;

View File

@@ -10,10 +10,10 @@ import com.annimon.stream.Stream;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.contacts.sync.ContactDiscovery;
import org.thoughtcrime.securesms.database.GroupDatabase;
import org.thoughtcrime.securesms.database.RecipientDatabase.RegisteredState;
import org.thoughtcrime.securesms.database.GroupTable;
import org.thoughtcrime.securesms.database.RecipientTable.RegisteredState;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.database.ThreadDatabase;
import org.thoughtcrime.securesms.database.ThreadTable;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.groups.GroupChangeBusyException;
import org.thoughtcrime.securesms.groups.GroupChangeException;
@@ -214,8 +214,8 @@ public class RecipientUtil {
return true;
}
ThreadDatabase threadDatabase = SignalDatabase.threads();
Recipient threadRecipient = threadDatabase.getRecipientForThreadId(threadId);
ThreadTable threadTable = SignalDatabase.threads();
Recipient threadRecipient = threadTable.getRecipientForThreadId(threadId);
if (threadRecipient == null) {
return true;
@@ -298,10 +298,10 @@ public class RecipientUtil {
if (recipient.isProfileSharing()) {
return true;
} else {
GroupDatabase groupDatabase = SignalDatabase.groups();
GroupTable groupDatabase = SignalDatabase.groups();
return groupDatabase.getPushGroupsContainingMember(recipient.getId())
.stream()
.anyMatch(GroupDatabase.GroupRecord::isV2Group);
.anyMatch(GroupTable.GroupRecord::isV2Group);
}
}

View File

@@ -9,7 +9,7 @@ import androidx.core.util.Consumer;
import org.signal.core.util.concurrent.SignalExecutors;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.contacts.sync.ContactDiscovery;
import org.thoughtcrime.securesms.database.GroupDatabase;
import org.thoughtcrime.securesms.database.GroupTable;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.database.model.IdentityRecord;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
@@ -106,11 +106,11 @@ final class RecipientDialogRepository {
void getGroupMembership(@NonNull Consumer<List<RecipientId>> onComplete) {
SimpleTask.run(SignalExecutors.UNBOUNDED,
() -> {
GroupDatabase groupDatabase = SignalDatabase.groups();
List<GroupDatabase.GroupRecord> groupRecords = groupDatabase.getPushGroupsContainingMember(recipientId);
ArrayList<RecipientId> groupRecipients = new ArrayList<>(groupRecords.size());
GroupTable groupDatabase = SignalDatabase.groups();
List<GroupTable.GroupRecord> groupRecords = groupDatabase.getPushGroupsContainingMember(recipientId);
ArrayList<RecipientId> groupRecipients = new ArrayList<>(groupRecords.size());
for (GroupDatabase.GroupRecord groupRecord : groupRecords) {
for (GroupTable.GroupRecord groupRecord : groupRecords) {
groupRecipients.add(groupRecord.getRecipientId());
}

View File

@@ -21,7 +21,7 @@ import org.signal.libsignal.protocol.util.Pair;
import org.thoughtcrime.securesms.BlockUnblockDialog;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.components.settings.conversation.ConversationSettingsActivity;
import org.thoughtcrime.securesms.database.GroupDatabase;
import org.thoughtcrime.securesms.database.GroupTable;
import org.thoughtcrime.securesms.database.model.IdentityRecord;
import org.thoughtcrime.securesms.database.model.StoryViewState;
import org.thoughtcrime.securesms.groups.GroupId;
@@ -72,14 +72,14 @@ final class RecipientDialogViewModel extends ViewModel {
if (recipientDialogRepository.getGroupId() != null && recipientDialogRepository.getGroupId().isV2() && !recipientIsSelf) {
LiveGroup source = new LiveGroup(recipientDialogRepository.getGroupId());
LiveData<Pair<Boolean, Boolean>> localStatus = LiveDataUtil.combineLatest(source.isSelfAdmin(), Transformations.map(source.getGroupLink(), s -> s == null || s.isEnabled()), Pair::new);
LiveData<GroupDatabase.MemberLevel> recipientMemberLevel = Transformations.switchMap(recipient, source::getMemberLevel);
LiveData<Pair<Boolean, Boolean>> localStatus = LiveDataUtil.combineLatest(source.isSelfAdmin(), Transformations.map(source.getGroupLink(), s -> s == null || s.isEnabled()), Pair::new);
LiveData<GroupTable.MemberLevel> recipientMemberLevel = Transformations.switchMap(recipient, source::getMemberLevel);
adminActionStatus = LiveDataUtil.combineLatest(localStatus, recipientMemberLevel, (statuses, memberLevel) -> {
boolean localAdmin = statuses.first();
boolean isLinkActive = statuses.second();
boolean inGroup = memberLevel.isInGroup();
boolean recipientAdmin = memberLevel == GroupDatabase.MemberLevel.ADMINISTRATOR;
boolean recipientAdmin = memberLevel == GroupTable.MemberLevel.ADMINISTRATOR;
return new AdminActionStatus(inGroup && localAdmin,
inGroup && localAdmin && !recipientAdmin,