mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-20 16:49:40 +01:00
Add read and viewed receipts to the MSL.
This commit is contained in:
committed by
Alex Hart
parent
3d0e15e2b8
commit
0921ebe5f1
@@ -20,6 +20,7 @@ import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch;
|
||||
import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatchList;
|
||||
import org.thoughtcrime.securesms.database.documents.NetworkFailure;
|
||||
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper;
|
||||
import org.thoughtcrime.securesms.database.model.MessageId;
|
||||
import org.thoughtcrime.securesms.database.model.MessageRecord;
|
||||
import org.thoughtcrime.securesms.database.model.ReactionRecord;
|
||||
import org.thoughtcrime.securesms.database.model.SmsMessageRecord;
|
||||
@@ -682,11 +683,13 @@ public abstract class MessageDatabase extends Database implements MmsSmsColumns
|
||||
|
||||
private final long threadId;
|
||||
private final SyncMessageId syncMessageId;
|
||||
private final MessageId messageId;
|
||||
private final ExpirationInfo expirationInfo;
|
||||
|
||||
public MarkedMessageInfo(long threadId, SyncMessageId syncMessageId, ExpirationInfo expirationInfo) {
|
||||
public MarkedMessageInfo(long threadId, @NonNull SyncMessageId syncMessageId, @NonNull MessageId messageId, @Nullable ExpirationInfo expirationInfo) {
|
||||
this.threadId = threadId;
|
||||
this.syncMessageId = syncMessageId;
|
||||
this.messageId = messageId;
|
||||
this.expirationInfo = expirationInfo;
|
||||
}
|
||||
|
||||
@@ -694,11 +697,15 @@ public abstract class MessageDatabase extends Database implements MmsSmsColumns
|
||||
return threadId;
|
||||
}
|
||||
|
||||
public SyncMessageId getSyncMessageId() {
|
||||
public @NonNull SyncMessageId getSyncMessageId() {
|
||||
return syncMessageId;
|
||||
}
|
||||
|
||||
public ExpirationInfo getExpirationInfo() {
|
||||
public @NonNull MessageId getMessageId() {
|
||||
return messageId;
|
||||
}
|
||||
|
||||
public @Nullable ExpirationInfo getExpirationInfo() {
|
||||
return expirationInfo;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,6 +151,15 @@ class MessageSendLogDatabase constructor(context: Context?, databaseHelper: SQLC
|
||||
}
|
||||
}
|
||||
|
||||
fun insertIfPossible(recipientId: RecipientId, sentTimestamp: Long, sendMessageResult: SendMessageResult, contentHint: ContentHint, messageIds: List<MessageId>) {
|
||||
if (!FeatureFlags.senderKey()) return
|
||||
|
||||
if (sendMessageResult.isSuccess && sendMessageResult.success.content.isPresent) {
|
||||
val recipientDevice = listOf(RecipientDevice(recipientId, sendMessageResult.success.devices))
|
||||
insert(recipientDevice, sentTimestamp, sendMessageResult.success.content.get(), contentHint, messageIds)
|
||||
}
|
||||
}
|
||||
|
||||
fun insertIfPossible(sentTimestamp: Long, possibleRecipients: List<Recipient>, results: List<SendMessageResult>, contentHint: ContentHint, relatedMessageId: Long, isRelatedMessageMms: Boolean) {
|
||||
if (!FeatureFlags.senderKey()) return
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@ import org.thoughtcrime.securesms.database.documents.NetworkFailureList;
|
||||
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper;
|
||||
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;
|
||||
import org.thoughtcrime.securesms.database.model.NotificationMmsMessageRecord;
|
||||
import org.thoughtcrime.securesms.database.model.Quote;
|
||||
@@ -399,11 +400,12 @@ public class MmsDatabase extends MessageDatabase {
|
||||
|
||||
List<MarkedMessageInfo> results = new ArrayList<>(cursor.getCount());
|
||||
while (cursor.moveToNext()) {
|
||||
long messageId = CursorUtil.requireLong(cursor, ID);
|
||||
RecipientId recipientId = RecipientId.from(CursorUtil.requireLong(cursor, RECIPIENT_ID));
|
||||
long dateSent = CursorUtil.requireLong(cursor, DATE_SENT);
|
||||
SyncMessageId syncMessageId = new SyncMessageId(recipientId, dateSent);
|
||||
|
||||
results.add(new MarkedMessageInfo(threadId, syncMessageId, null));
|
||||
results.add(new MarkedMessageInfo(threadId, syncMessageId, new MessageId(messageId, true), null));
|
||||
}
|
||||
|
||||
return results;
|
||||
@@ -437,12 +439,13 @@ public class MmsDatabase extends MessageDatabase {
|
||||
while (cursor != null && cursor.moveToNext()) {
|
||||
long type = CursorUtil.requireLong(cursor, MESSAGE_BOX);
|
||||
if (Types.isSecureType(type) && Types.isInboxType(type)) {
|
||||
long messageId = CursorUtil.requireLong(cursor, ID);
|
||||
long threadId = CursorUtil.requireLong(cursor, THREAD_ID);
|
||||
RecipientId recipientId = RecipientId.from(CursorUtil.requireLong(cursor, RECIPIENT_ID));
|
||||
long dateSent = CursorUtil.requireLong(cursor, DATE_SENT);
|
||||
SyncMessageId syncMessageId = new SyncMessageId(recipientId, dateSent);
|
||||
|
||||
results.add(new MarkedMessageInfo(threadId, syncMessageId, null));
|
||||
results.add(new MarkedMessageInfo(threadId, syncMessageId, new MessageId(messageId, true), null));
|
||||
|
||||
ContentValues contentValues = new ContentValues();
|
||||
contentValues.put(VIEWED_RECEIPT_COUNT, 1);
|
||||
@@ -1004,7 +1007,7 @@ public class MmsDatabase extends MessageDatabase {
|
||||
SyncMessageId syncMessageId = new SyncMessageId(recipientId, dateSent);
|
||||
ExpirationInfo expirationInfo = new ExpirationInfo(messageId, expiresIn, expireStarted, true);
|
||||
|
||||
result.add(new MarkedMessageInfo(threadId, syncMessageId, expirationInfo));
|
||||
result.add(new MarkedMessageInfo(threadId, syncMessageId, new MessageId(messageId, true), expirationInfo));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatchList;
|
||||
import org.thoughtcrime.securesms.database.documents.NetworkFailure;
|
||||
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper;
|
||||
import org.thoughtcrime.securesms.database.model.GroupCallUpdateDetailsUtil;
|
||||
import org.thoughtcrime.securesms.database.model.MessageId;
|
||||
import org.thoughtcrime.securesms.database.model.MessageRecord;
|
||||
import org.thoughtcrime.securesms.database.model.ReactionRecord;
|
||||
import org.thoughtcrime.securesms.database.model.SmsMessageRecord;
|
||||
@@ -644,7 +645,7 @@ public class SmsDatabase extends MessageDatabase {
|
||||
SyncMessageId syncMessageId = new SyncMessageId(recipientId, dateSent);
|
||||
ExpirationInfo expirationInfo = new ExpirationInfo(messageId, expiresIn, expireStarted, false);
|
||||
|
||||
results.add(new MarkedMessageInfo(threadId, syncMessageId, expirationInfo));
|
||||
results.add(new MarkedMessageInfo(threadId, syncMessageId, new MessageId(messageId, false), expirationInfo));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user