mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-24 10:51:27 +01:00
Renamed database classes to table classes.
Because they're not databases. They're tables.
This commit is contained in:
committed by
Cody Henthorne
parent
b190f9495a
commit
7949996c5c
@@ -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) {
|
||||
|
||||
@@ -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++;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user