mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-19 16:19:33 +01:00
Introduce SignalDatabase as the main database entrypoint.
This commit is contained in:
@@ -6,15 +6,13 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.WorkerThread;
|
||||
import androidx.core.util.Consumer;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import org.signal.core.util.concurrent.SignalExecutors;
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroup;
|
||||
import org.thoughtcrime.securesms.database.DatabaseFactory;
|
||||
import org.thoughtcrime.securesms.database.GroupDatabase;
|
||||
import org.thoughtcrime.securesms.database.MessageDatabase;
|
||||
import org.thoughtcrime.securesms.database.RecipientDatabase;
|
||||
import org.thoughtcrime.securesms.database.SignalDatabase;
|
||||
import org.thoughtcrime.securesms.database.ThreadDatabase;
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||
import org.thoughtcrime.securesms.groups.GroupChangeException;
|
||||
@@ -53,14 +51,14 @@ final class MessageRequestRepository {
|
||||
|
||||
void getGroups(@NonNull RecipientId recipientId, @NonNull Consumer<List<String>> onGroupsLoaded) {
|
||||
executor.execute(() -> {
|
||||
GroupDatabase groupDatabase = DatabaseFactory.getGroupDatabase(context);
|
||||
GroupDatabase groupDatabase = SignalDatabase.groups();
|
||||
onGroupsLoaded.accept(groupDatabase.getPushGroupNamesContainingMember(recipientId));
|
||||
});
|
||||
}
|
||||
|
||||
void getGroupInfo(@NonNull RecipientId recipientId, @NonNull Consumer<GroupInfo> onGroupInfoLoaded) {
|
||||
executor.execute(() -> {
|
||||
GroupDatabase groupDatabase = DatabaseFactory.getGroupDatabase(context);
|
||||
GroupDatabase groupDatabase = SignalDatabase.groups();
|
||||
Optional<GroupDatabase.GroupRecord> groupRecord = groupDatabase.getGroup(recipientId);
|
||||
onGroupInfoLoaded.accept(groupRecord.transform(record -> {
|
||||
if (record.isV2Group()) {
|
||||
@@ -134,7 +132,7 @@ final class MessageRequestRepository {
|
||||
Log.i(TAG, "GV2 accepting invite");
|
||||
GroupManager.acceptInvite(context, liveRecipient.get().requireGroupId().requireV2());
|
||||
|
||||
RecipientDatabase recipientDatabase = DatabaseFactory.getRecipientDatabase(context);
|
||||
RecipientDatabase recipientDatabase = SignalDatabase.recipients();
|
||||
recipientDatabase.setProfileSharing(liveRecipient.getId(), true);
|
||||
|
||||
onMessageRequestAccepted.run();
|
||||
@@ -143,18 +141,16 @@ final class MessageRequestRepository {
|
||||
error.onError(GroupChangeFailureReason.fromException(e));
|
||||
}
|
||||
} else {
|
||||
RecipientDatabase recipientDatabase = DatabaseFactory.getRecipientDatabase(context);
|
||||
RecipientDatabase recipientDatabase = SignalDatabase.recipients();
|
||||
recipientDatabase.setProfileSharing(liveRecipient.getId(), true);
|
||||
|
||||
MessageSender.sendProfileKey(context, threadId);
|
||||
|
||||
List<MessageDatabase.MarkedMessageInfo> messageIds = DatabaseFactory.getThreadDatabase(context)
|
||||
.setEntireThreadRead(threadId);
|
||||
List<MessageDatabase.MarkedMessageInfo> messageIds = SignalDatabase.threads().setEntireThreadRead(threadId);
|
||||
ApplicationDependencies.getMessageNotifier().updateNotification(context);
|
||||
MarkReadReceiver.process(context, messageIds);
|
||||
|
||||
List<MessageDatabase.MarkedMessageInfo> viewedInfos = DatabaseFactory.getMmsDatabase(context)
|
||||
.getViewedIncomingMessages(threadId);
|
||||
List<MessageDatabase.MarkedMessageInfo> viewedInfos = SignalDatabase.mms().getViewedIncomingMessages(threadId);
|
||||
|
||||
SendViewedReceiptJob.enqueue(threadId, liveRecipient.getId(), viewedInfos);
|
||||
|
||||
@@ -179,7 +175,7 @@ final class MessageRequestRepository {
|
||||
try {
|
||||
GroupManager.leaveGroupFromBlockOrMessageRequest(context, resolved.requireGroupId().requirePush());
|
||||
} catch (GroupChangeException | GroupPatchNotAcceptedException e) {
|
||||
if (DatabaseFactory.getGroupDatabase(context).isCurrentMember(resolved.requireGroupId().requirePush(), Recipient.self().getId())) {
|
||||
if (SignalDatabase.groups().isCurrentMember(resolved.requireGroupId().requirePush(), Recipient.self().getId())) {
|
||||
Log.w(TAG, "Failed to leave group, and we're still a member.", e);
|
||||
error.onError(GroupChangeFailureReason.fromException(e));
|
||||
return;
|
||||
@@ -197,7 +193,7 @@ final class MessageRequestRepository {
|
||||
ApplicationDependencies.getJobManager().add(MultiDeviceMessageRequestResponseJob.forDelete(recipient.getId()));
|
||||
}
|
||||
|
||||
ThreadDatabase threadDatabase = DatabaseFactory.getThreadDatabase(context);
|
||||
ThreadDatabase threadDatabase = SignalDatabase.threads();
|
||||
threadDatabase.deleteConversation(threadId);
|
||||
|
||||
onMessageRequestDeleted.run();
|
||||
@@ -259,8 +255,7 @@ final class MessageRequestRepository {
|
||||
|
||||
RecipientUtil.unblock(context, recipient);
|
||||
|
||||
List<MessageDatabase.MarkedMessageInfo> messageIds = DatabaseFactory.getThreadDatabase(context)
|
||||
.setEntireThreadRead(threadId);
|
||||
List<MessageDatabase.MarkedMessageInfo> messageIds = SignalDatabase.threads().setEntireThreadRead(threadId);
|
||||
ApplicationDependencies.getMessageNotifier().updateNotification(context);
|
||||
MarkReadReceiver.process(context, messageIds);
|
||||
|
||||
@@ -273,7 +268,7 @@ final class MessageRequestRepository {
|
||||
}
|
||||
|
||||
private GroupDatabase.MemberLevel getGroupMemberLevel(@NonNull RecipientId recipientId) {
|
||||
return DatabaseFactory.getGroupDatabase(context)
|
||||
return SignalDatabase.groups()
|
||||
.getGroup(recipientId)
|
||||
.transform(g -> g.memberLevel(Recipient.self()))
|
||||
.or(GroupDatabase.MemberLevel.NOT_A_MEMBER);
|
||||
@@ -283,7 +278,7 @@ final class MessageRequestRepository {
|
||||
@WorkerThread
|
||||
private boolean isLegacyThread(@NonNull Recipient recipient) {
|
||||
Context context = ApplicationDependencies.getApplication();
|
||||
Long threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(recipient.getId());
|
||||
Long threadId = SignalDatabase.threads().getThreadIdFor(recipient.getId());
|
||||
|
||||
return threadId != null &&
|
||||
(RecipientUtil.hasSentMessageInThread(context, threadId) || RecipientUtil.isPreMessageRequestThread(context, threadId));
|
||||
|
||||
Reference in New Issue
Block a user