Remove the rest of MmsSmsTable.

This commit is contained in:
Greyson Parrelli
2022-12-31 13:43:12 -05:00
parent 6cd6073bc7
commit fecfd7cd78
20 changed files with 194 additions and 307 deletions

View File

@@ -15,7 +15,6 @@ import org.thoughtcrime.securesms.conversation.ConversationData.MessageRequestDa
import org.thoughtcrime.securesms.conversation.ConversationMessage.ConversationMessageFactory;
import org.thoughtcrime.securesms.database.CallTable;
import org.thoughtcrime.securesms.database.MessageTable;
import org.thoughtcrime.securesms.database.MmsSmsTable;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.database.model.InMemoryMessageRecord;
import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord;
@@ -94,7 +93,6 @@ public class ConversationDataSource implements PagedDataSource<MessageId, Conver
@Override
public @NonNull List<ConversationMessage> load(int start, int length, @NonNull CancellationSignal cancellationSignal) {
Stopwatch stopwatch = new Stopwatch("load(" + start + ", " + length + "), thread " + threadId);
MmsSmsTable db = SignalDatabase.mmsSms();
List<MessageRecord> records = new ArrayList<>(length);
MentionHelper mentionHelper = new MentionHelper();
QuotedHelper quotedHelper = new QuotedHelper();
@@ -104,7 +102,7 @@ public class ConversationDataSource implements PagedDataSource<MessageId, Conver
CallHelper callHelper = new CallHelper();
Set<ServiceId> referencedIds = new HashSet<>();
try (MessageTable.Reader reader = MessageTable.mmsReaderFor(db.getConversation(threadId, start, length))) {
try (MessageTable.Reader reader = MessageTable.mmsReaderFor(SignalDatabase.messages().getConversation(threadId, start, length))) {
MessageRecord record;
while ((record = reader.getNext()) != null && !cancellationSignal.isCanceled()) {
records.add(record);
@@ -144,7 +142,7 @@ public class ConversationDataSource implements PagedDataSource<MessageId, Conver
records = reactionHelper.buildUpdatedModels(records);
stopwatch.split("reaction-models");
attachmentHelper.fetchAttachments(context);
attachmentHelper.fetchAttachments();
stopwatch.split("attachments");
records = attachmentHelper.buildUpdatedModels(context, records);
@@ -274,22 +272,28 @@ public class ConversationDataSource implements PagedDataSource<MessageId, Conver
}
}
private static class AttachmentHelper {
public static class AttachmentHelper {
private Collection<Long> messageIds = new LinkedList<>();
private Map<Long, List<DatabaseAttachment>> messageIdToAttachments = new HashMap<>();
void add(MessageRecord record) {
public void add(MessageRecord record) {
if (record.isMms()) {
messageIds.add(record.getId());
}
}
void fetchAttachments(Context context) {
public void addAll(List<MessageRecord> records) {
for (MessageRecord record : records) {
add(record);
}
}
public void fetchAttachments() {
messageIdToAttachments = SignalDatabase.attachments().getAttachmentsForMessages(messageIds);
}
@NonNull List<MessageRecord> buildUpdatedModels(@NonNull Context context, @NonNull List<MessageRecord> records) {
public @NonNull List<MessageRecord> buildUpdatedModels(@NonNull Context context, @NonNull List<MessageRecord> records) {
return records.stream()
.map(record -> {
if (record instanceof MediaMmsMessageRecord) {

View File

@@ -179,6 +179,7 @@ import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.database.ThreadTable;
import org.thoughtcrime.securesms.database.identity.IdentityRecordList;
import org.thoughtcrime.securesms.database.model.IdentityRecord;
import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord;
import org.thoughtcrime.securesms.database.model.Mention;
import org.thoughtcrime.securesms.database.model.MessageId;
import org.thoughtcrime.securesms.database.model.MessageRecord;
@@ -4185,11 +4186,15 @@ public class ConversationParentFragment extends Fragment
Context context = ApplicationDependencies.getApplication();
MessageRecord messageRecord = SignalDatabase.mmsSms().getMessageFor(quoteId.getId(), quoteId.getAuthor());
MessageRecord messageRecord = SignalDatabase.messages().getMessageFor(quoteId.getId(), quoteId.getAuthor());
if (messageRecord == null) {
return null;
}
if (messageRecord instanceof MediaMmsMessageRecord) {
messageRecord = ((MediaMmsMessageRecord) messageRecord).withAttachments(context, SignalDatabase.attachments().getAttachmentsForMessage(messageRecord.getId()));
}
return ConversationMessageFactory.createWithUnresolvedData(context, messageRecord);
}

View File

@@ -54,14 +54,21 @@ class MessageQuotesRepository {
return emptyList()
}
val replyRecords: List<MessageRecord> = SignalDatabase.mmsSms.getAllMessagesThatQuote(rootMessageId)
var replyRecords: List<MessageRecord> = SignalDatabase.messages.getAllMessagesThatQuote(rootMessageId)
val replies: List<ConversationMessage> = ConversationDataSource.ReactionHelper()
.apply {
addAll(replyRecords)
fetchReactions()
}
.buildUpdatedModels(replyRecords)
val reactionHelper = ConversationDataSource.ReactionHelper()
val attachmentHelper = ConversationDataSource.AttachmentHelper()
reactionHelper.addAll(replyRecords)
attachmentHelper.addAll(replyRecords)
reactionHelper.fetchReactions()
attachmentHelper.fetchAttachments()
replyRecords = reactionHelper.buildUpdatedModels(replyRecords)
replyRecords = attachmentHelper.buildUpdatedModels(ApplicationDependencies.getApplication(), replyRecords)
val replies: List<ConversationMessage> = replyRecords
.map { replyRecord ->
val replyQuote: Quote? = replyRecord.getQuote()
if (replyQuote != null && replyQuote.id == originalRecord!!.dateSent) {
@@ -76,13 +83,23 @@ class MessageQuotesRepository {
originalRecord = SignalDatabase.payments.updateMessageWithPayment(originalRecord)
}
val originalMessage: List<ConversationMessage> = ConversationDataSource.ReactionHelper()
originalRecord = ConversationDataSource.ReactionHelper()
.apply {
add(originalRecord)
fetchReactions()
}
.buildUpdatedModels(listOf(originalRecord))
.map { ConversationMessageFactory.createWithUnresolvedData(application, it, it.getDisplayBody(application), false) }
.get(0)
originalRecord = ConversationDataSource.AttachmentHelper()
.apply {
add(originalRecord)
fetchAttachments()
}
.buildUpdatedModels(ApplicationDependencies.getApplication(), listOf(originalRecord))
.get(0)
val originalMessage: ConversationMessage = ConversationMessageFactory.createWithUnresolvedData(application, originalRecord, originalRecord.getDisplayBody(application), false)
return replies + originalMessage
}