mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 01:40:07 +01:00
Show smaller quote chains within larger quote chains.
This commit is contained in:
committed by
Alex Hart
parent
56f6888d49
commit
f207a82d2f
@@ -38,6 +38,7 @@ import org.thoughtcrime.securesms.database.MessageTable.SyncMessageId;
|
||||
import org.thoughtcrime.securesms.database.model.MessageExportStatus;
|
||||
import org.thoughtcrime.securesms.database.model.MessageId;
|
||||
import org.thoughtcrime.securesms.database.model.MessageRecord;
|
||||
import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.MessageExportState;
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||
import org.thoughtcrime.securesms.notifications.v2.DefaultMessageNotifier;
|
||||
@@ -290,6 +291,39 @@ public class MmsSmsTable extends DatabaseTable {
|
||||
}
|
||||
}
|
||||
|
||||
public MessageId getRootOfQuoteChain(@NonNull MessageId id) {
|
||||
if (!id.isMms()) {
|
||||
return id;
|
||||
}
|
||||
|
||||
MmsMessageRecord targetMessage;
|
||||
try {
|
||||
targetMessage = (MmsMessageRecord) SignalDatabase.mms().getMessageRecord(id.getId());
|
||||
} catch (NoSuchMessageException e) {
|
||||
throw new IllegalArgumentException("Invalid message ID!");
|
||||
}
|
||||
|
||||
if (targetMessage.getQuote() == null) {
|
||||
return id;
|
||||
}
|
||||
|
||||
String query;
|
||||
if (targetMessage.getQuote().getAuthor().equals(Recipient.self().getId())) {
|
||||
query = MmsTable.DATE_SENT + " = " + targetMessage.getQuote().getId() + " AND (" + MmsSmsColumns.TYPE + " & " + MmsSmsColumns.Types.BASE_TYPE_MASK + ") = " + MmsSmsColumns.Types.BASE_SENT_TYPE;
|
||||
} else {
|
||||
query = MmsTable.DATE_SENT + " = " + targetMessage.getQuote().getId() + " AND " + MmsTable.RECIPIENT_ID + " = '" + targetMessage.getQuote().getAuthor().serialize() + "'";
|
||||
}
|
||||
|
||||
try (Reader reader = new Reader(queryTables(PROJECTION, query, null, "1", false))) {
|
||||
MessageRecord record;
|
||||
if ((record = reader.getNext()) != null) {
|
||||
return getRootOfQuoteChain(new MessageId(record.getId(), record.isMms()));
|
||||
}
|
||||
}
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
public List<MessageRecord> getAllMessagesThatQuote(@NonNull MessageId id) {
|
||||
MessageRecord targetMessage;
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user