kopia lustrzana https://github.com/ryukoposting/Signal-Android
Remove isMms from MessageId.
rodzic
60ae883df6
commit
3850c9c89d
|
@ -173,7 +173,7 @@ public class FullBackupExporter extends FullBackupBase {
|
|||
if (table.equals(MessageTable.TABLE_NAME)) {
|
||||
count = exportTable(table, input, outputStream, FullBackupExporter::isNonExpiringMmsMessage, null, count, estimatedCount, cancellationSignal);
|
||||
} else if (table.equals(ReactionTable.TABLE_NAME)) {
|
||||
count = exportTable(table, input, outputStream, cursor -> isForNonExpiringMessage(input, new MessageId(CursorUtil.requireLong(cursor, ReactionTable.MESSAGE_ID), CursorUtil.requireBoolean(cursor, ReactionTable.IS_MMS))), null, count, estimatedCount, cancellationSignal);
|
||||
count = exportTable(table, input, outputStream, cursor -> isForNonExpiringMessage(input, new MessageId(CursorUtil.requireLong(cursor, ReactionTable.MESSAGE_ID))), null, count, estimatedCount, cancellationSignal);
|
||||
} else if (table.equals(MentionTable.TABLE_NAME)) {
|
||||
count = exportTable(table, input, outputStream, cursor -> isForNonExpiringMmsMessage(input, CursorUtil.requireLong(cursor, MentionTable.MESSAGE_ID)), null, count, estimatedCount, cancellationSignal);
|
||||
} else if (table.equals(GroupReceiptTable.TABLE_NAME)) {
|
||||
|
|
|
@ -40,7 +40,7 @@ class ViewGiftRepository {
|
|||
}
|
||||
|
||||
val messageObserver = DatabaseObserver.MessageObserver {
|
||||
if (it.mms && messageId == it.id) {
|
||||
if (messageId == it.id) {
|
||||
refresh()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -264,7 +264,7 @@ public class VoiceNotePlaybackService extends MediaBrowserServiceCompat {
|
|||
ApplicationDependencies.getJobManager().add(new SendViewedReceiptJob(markedMessageInfo.getThreadId(),
|
||||
recipientId,
|
||||
markedMessageInfo.getSyncMessageId().getTimetamp(),
|
||||
new MessageId(messageId, true)));
|
||||
new MessageId(messageId)));
|
||||
MultiDeviceViewedUpdateJob.enqueue(Collections.singletonList(markedMessageInfo.getSyncMessageId()));
|
||||
}
|
||||
});
|
||||
|
|
|
@ -167,8 +167,7 @@ public class ConversationDataSource implements PagedDataSource<MessageId, Conver
|
|||
@Override
|
||||
public @Nullable ConversationMessage load(@NonNull MessageId messageId) {
|
||||
Stopwatch stopwatch = new Stopwatch("load(" + messageId + "), thread " + threadId);
|
||||
MessageTable database = messageId.isMms() ? SignalDatabase.messages() : SignalDatabase.messages();
|
||||
MessageRecord record = database.getMessageRecordOrNull(messageId.getId());
|
||||
MessageRecord record = SignalDatabase.messages().getMessageRecordOrNull(messageId.getId());
|
||||
|
||||
if (record instanceof MediaMmsMessageRecord &&
|
||||
((MediaMmsMessageRecord) record).getParentStoryId() != null &&
|
||||
|
@ -180,12 +179,7 @@ public class ConversationDataSource implements PagedDataSource<MessageId, Conver
|
|||
|
||||
try {
|
||||
if (record != null) {
|
||||
List<Mention> mentions;
|
||||
if (messageId.isMms()) {
|
||||
mentions = SignalDatabase.mentions().getMentionsForMessage(messageId.getId());
|
||||
} else {
|
||||
mentions = Collections.emptyList();
|
||||
}
|
||||
List<Mention> mentions = SignalDatabase.mentions().getMentionsForMessage(messageId.getId());
|
||||
|
||||
stopwatch.split("mentions");
|
||||
|
||||
|
@ -194,11 +188,9 @@ public class ConversationDataSource implements PagedDataSource<MessageId, Conver
|
|||
|
||||
stopwatch.split("reactions");
|
||||
|
||||
if (messageId.isMms()) {
|
||||
List<DatabaseAttachment> attachments = SignalDatabase.attachments().getAttachmentsForMessage(messageId.getId());
|
||||
if (attachments.size() > 0) {
|
||||
record = ((MediaMmsMessageRecord) record).withAttachments(context, attachments);
|
||||
}
|
||||
List<DatabaseAttachment> attachments = SignalDatabase.attachments().getAttachmentsForMessage(messageId.getId());
|
||||
if (attachments.size() > 0) {
|
||||
record = ((MediaMmsMessageRecord) record).withAttachments(context, attachments);
|
||||
}
|
||||
|
||||
stopwatch.split("attachments");
|
||||
|
@ -220,7 +212,7 @@ public class ConversationDataSource implements PagedDataSource<MessageId, Conver
|
|||
|
||||
@Override
|
||||
public @NonNull MessageId getKey(@NonNull ConversationMessage conversationMessage) {
|
||||
return new MessageId(conversationMessage.getMessageRecord().getId(), conversationMessage.getMessageRecord().isMms());
|
||||
return new MessageId(conversationMessage.getMessageRecord().getId());
|
||||
}
|
||||
|
||||
private static class MentionHelper {
|
||||
|
@ -281,7 +273,7 @@ public class ConversationDataSource implements PagedDataSource<MessageId, Conver
|
|||
private Map<MessageId, List<ReactionRecord>> messageIdToReactions = new HashMap<>();
|
||||
|
||||
public void add(MessageRecord record) {
|
||||
messageIds.add(new MessageId(record.getId(), record.isMms()));
|
||||
messageIds.add(new MessageId(record.getId()));
|
||||
}
|
||||
|
||||
public void addAll(List<MessageRecord> records) {
|
||||
|
@ -297,7 +289,7 @@ public class ConversationDataSource implements PagedDataSource<MessageId, Conver
|
|||
public @NonNull List<MessageRecord> buildUpdatedModels(@NonNull List<MessageRecord> records) {
|
||||
return records.stream()
|
||||
.map(record -> {
|
||||
MessageId messageId = new MessageId(record.getId(), record.isMms());
|
||||
MessageId messageId = new MessageId(record.getId());
|
||||
List<ReactionRecord> reactions = messageIdToReactions.get(messageId);
|
||||
|
||||
return recordWithReactions(record, reactions);
|
||||
|
|
|
@ -1758,7 +1758,7 @@ public class ConversationFragment extends LoggingFragment implements Multiselect
|
|||
if (getContext() != null && getActivity() != null) {
|
||||
MessageQuotesBottomSheet.show(
|
||||
getChildFragmentManager(),
|
||||
new MessageId(messageRecord.getId(), messageRecord.isMms()),
|
||||
new MessageId(messageRecord.getId()),
|
||||
recipient.getId()
|
||||
);
|
||||
}
|
||||
|
|
|
@ -2502,9 +2502,9 @@ public class ConversationParentFragment extends Fragment
|
|||
.orElse(null);
|
||||
|
||||
if (oldRecord != null && oldRecord.getEmoji().equals(emoji)) {
|
||||
MessageSender.sendReactionRemoval(context, new MessageId(messageRecord.getId(), messageRecord.isMms()), oldRecord);
|
||||
MessageSender.sendReactionRemoval(context, new MessageId(messageRecord.getId()), oldRecord);
|
||||
} else {
|
||||
MessageSender.sendNewReaction(context, new MessageId(messageRecord.getId(), messageRecord.isMms()), emoji);
|
||||
MessageSender.sendNewReaction(context, new MessageId(messageRecord.getId()), emoji);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -2522,7 +2522,7 @@ public class ConversationParentFragment extends Fragment
|
|||
reactionDelegate.hide();
|
||||
|
||||
SignalExecutors.BOUNDED.execute(() -> MessageSender.sendReactionRemoval(context,
|
||||
new MessageId(messageRecord.getId(), messageRecord.isMms()),
|
||||
new MessageId(messageRecord.getId()),
|
||||
oldRecord));
|
||||
} else {
|
||||
reactionDelegate.hideForReactWithAny();
|
||||
|
|
|
@ -96,7 +96,7 @@ class MessageQuotesBottomSheet : FixedRoundedCornerBottomSheetDialogFragment() {
|
|||
messageAdapter.submitList(messages) {
|
||||
if (firstRender) {
|
||||
val targetMessageId = MessageId.deserialize(arguments?.getString(KEY_MESSAGE_ID, null) ?: throw IllegalArgumentException())
|
||||
val targetMessagePosition = messages.indexOfFirst { it.messageRecord.id == targetMessageId.id && it.messageRecord.isMms == targetMessageId.mms }
|
||||
val targetMessagePosition = messages.indexOfFirst { it.messageRecord.id == targetMessageId.id }
|
||||
|
||||
(list.layoutManager as LinearLayoutManager).scrollToPositionWithOffset(targetMessagePosition, 100)
|
||||
|
||||
|
|
|
@ -48,11 +48,7 @@ class MessageQuotesRepository {
|
|||
private fun getMessagesInQuoteChainSync(application: Application, messageId: MessageId): List<ConversationMessage> {
|
||||
val rootMessageId: MessageId = SignalDatabase.mmsSms.getRootOfQuoteChain(messageId)
|
||||
|
||||
var originalRecord: MessageRecord? = if (rootMessageId.mms) {
|
||||
SignalDatabase.messages.getMessageRecordOrNull(rootMessageId.id)
|
||||
} else {
|
||||
SignalDatabase.messages.getMessageRecordOrNull(rootMessageId.id)
|
||||
}
|
||||
var originalRecord: MessageRecord? = SignalDatabase.messages.getMessageRecordOrNull(rootMessageId.id)
|
||||
|
||||
if (originalRecord == null) {
|
||||
return emptyList()
|
||||
|
|
|
@ -259,7 +259,7 @@ class MessageSendLogTables constructor(context: Context?, databaseHelper: Signal
|
|||
messageValues += ContentValues().apply {
|
||||
put(MessageTable.PAYLOAD_ID, payloadId)
|
||||
put(MessageTable.MESSAGE_ID, messageId.id)
|
||||
put(MessageTable.IS_MMS, if (messageId.mms) 1 else 0)
|
||||
put(MessageTable.IS_MMS, 0)
|
||||
}
|
||||
}
|
||||
SqlUtil.buildBulkInsert(MessageTable.TABLE_NAME, arrayOf(MessageTable.PAYLOAD_ID, MessageTable.MESSAGE_ID, MessageTable.IS_MMS), messageValues)
|
||||
|
@ -292,8 +292,7 @@ class MessageSendLogTables constructor(context: Context?, databaseHelper: Signal
|
|||
while (messageCursor.moveToNext()) {
|
||||
messageIds.add(
|
||||
MessageId(
|
||||
id = CursorUtil.requireLong(messageCursor, MessageTable.MESSAGE_ID),
|
||||
mms = CursorUtil.requireBoolean(messageCursor, MessageTable.IS_MMS)
|
||||
id = CursorUtil.requireLong(messageCursor, MessageTable.MESSAGE_ID)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
|
|
@ -454,7 +454,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
db.endTransaction();
|
||||
}
|
||||
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(id, false));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(id));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyConversationListListeners();
|
||||
}
|
||||
|
||||
|
@ -498,7 +498,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
SyncMessageId syncMessageId = new SyncMessageId(recipientId, dateSent);
|
||||
StoryType storyType = StoryType.fromCode(CursorUtil.requireInt(cursor, STORY_TYPE));
|
||||
|
||||
results.add(new MarkedMessageInfo(threadId, syncMessageId, new MessageId(messageId, true), null));
|
||||
results.add(new MarkedMessageInfo(threadId, syncMessageId, new MessageId(messageId), null));
|
||||
}
|
||||
|
||||
return results;
|
||||
|
@ -536,7 +536,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
long dateSent = CursorUtil.requireLong(cursor, DATE_SENT);
|
||||
SyncMessageId syncMessageId = new SyncMessageId(recipientId, dateSent);
|
||||
|
||||
results.add(new MarkedMessageInfo(threadId, syncMessageId, new MessageId(messageId, true), null));
|
||||
results.add(new MarkedMessageInfo(threadId, syncMessageId, new MessageId(messageId), null));
|
||||
|
||||
ContentValues contentValues = new ContentValues();
|
||||
contentValues.put(VIEWED_RECEIPT_COUNT, 1);
|
||||
|
@ -575,7 +575,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
SyncMessageId syncMessageId = new SyncMessageId(recipientId, dateSent);
|
||||
StoryType storyType = StoryType.fromCode(CursorUtil.requireInt(cursor, STORY_TYPE));
|
||||
|
||||
results.add(new MarkedMessageInfo(threadId, syncMessageId, new MessageId(messageId, true), null));
|
||||
results.add(new MarkedMessageInfo(threadId, syncMessageId, new MessageId(messageId), null));
|
||||
|
||||
ContentValues contentValues = new ContentValues();
|
||||
contentValues.put(VIEWED_RECEIPT_COUNT, 1);
|
||||
|
@ -1327,7 +1327,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
RecipientId rowRecipientId = RecipientId.from(cursor.getLong(cursor.getColumnIndexOrThrow(RECIPIENT_ID)));
|
||||
|
||||
if (Recipient.self().getId().equals(authorId) || rowRecipientId.equals(authorId)) {
|
||||
return new MessageId(CursorUtil.requireLong(cursor, ID), true);
|
||||
return new MessageId(CursorUtil.requireLong(cursor, ID));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1700,7 +1700,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
|
||||
SignalDatabase.groupReceipts().update(ourRecipientId, id, status, timestamp);
|
||||
|
||||
messageUpdates.add(new MessageUpdate(threadId, new MessageId(id, true)));
|
||||
messageUpdates.add(new MessageUpdate(threadId, new MessageId(id)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1855,13 +1855,13 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
public void markAsForcedSms(long messageId) {
|
||||
long threadId = getThreadIdForMessage(messageId);
|
||||
updateMailboxBitmask(messageId, Types.PUSH_MESSAGE_BIT, Types.MESSAGE_FORCE_SMS_BIT, Optional.of(threadId));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId, true));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId));
|
||||
}
|
||||
|
||||
public void markAsRateLimited(long messageId) {
|
||||
long threadId = getThreadIdForMessage(messageId);
|
||||
updateMailboxBitmask(messageId, 0, Types.MESSAGE_RATE_LIMITED_BIT, Optional.of(threadId));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId, true));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId));
|
||||
}
|
||||
|
||||
public void clearRateLimitStatus(@NonNull Collection<Long> ids) {
|
||||
|
@ -1883,27 +1883,27 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
public void markAsPendingInsecureSmsFallback(long messageId) {
|
||||
long threadId = getThreadIdForMessage(messageId);
|
||||
updateMailboxBitmask(messageId, Types.BASE_TYPE_MASK, Types.BASE_PENDING_INSECURE_SMS_FALLBACK, Optional.of(threadId));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId, true));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId));
|
||||
}
|
||||
|
||||
public void markAsSending(long messageId) {
|
||||
long threadId = getThreadIdForMessage(messageId);
|
||||
updateMailboxBitmask(messageId, Types.BASE_TYPE_MASK, Types.BASE_SENDING_TYPE, Optional.of(threadId));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId, true));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyConversationListListeners();
|
||||
}
|
||||
|
||||
public void markAsSentFailed(long messageId) {
|
||||
long threadId = getThreadIdForMessage(messageId);
|
||||
updateMailboxBitmask(messageId, Types.BASE_TYPE_MASK, Types.BASE_SENT_FAILED_TYPE, Optional.of(threadId));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId, true));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyConversationListListeners();
|
||||
}
|
||||
|
||||
public void markAsSent(long messageId, boolean secure) {
|
||||
long threadId = getThreadIdForMessage(messageId);
|
||||
updateMailboxBitmask(messageId, Types.BASE_TYPE_MASK, Types.BASE_SENT_TYPE | (secure ? Types.PUSH_MESSAGE_BIT | Types.SECURE_MESSAGE_BIT : 0), Optional.of(threadId));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId, true));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyConversationListListeners();
|
||||
}
|
||||
|
||||
|
@ -1930,7 +1930,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
deletedAttachments = SignalDatabase.attachments().deleteAttachmentsForMessage(messageId);
|
||||
SignalDatabase.mentions().deleteMentionsForMessage(messageId);
|
||||
SignalDatabase.messageLog().deleteAllRelatedToMessage(messageId, true);
|
||||
SignalDatabase.reactions().deleteReactions(new MessageId(messageId, true));
|
||||
SignalDatabase.reactions().deleteReactions(new MessageId(messageId));
|
||||
deleteGroupStoryReplies(messageId);
|
||||
disassociateStoryQuotes(messageId);
|
||||
|
||||
|
@ -1942,7 +1942,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
db.endTransaction();
|
||||
}
|
||||
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId, true));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyConversationListListeners();
|
||||
|
||||
if (deletedAttachments) {
|
||||
|
@ -1956,7 +1956,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
contentValues.put(MMS_STATUS, state);
|
||||
|
||||
database.update(TABLE_NAME, contentValues, ID_WHERE, new String[] {messageId + ""});
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId, true));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId));
|
||||
}
|
||||
|
||||
public void markAsInsecure(long messageId) {
|
||||
|
@ -2035,7 +2035,6 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
|
||||
public @NonNull List<StoryType> getStoryTypes(@NonNull List<MessageId> messageIds) {
|
||||
List<Long> mmsMessages = messageIds.stream()
|
||||
.filter(MessageId::isMms)
|
||||
.map(MessageId::getId)
|
||||
.collect(java.util.stream.Collectors.toList());
|
||||
|
||||
|
@ -2056,7 +2055,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
}
|
||||
|
||||
return messageIds.stream().map(id -> {
|
||||
if (id.isMms() && storyTypes.containsKey(id.getId())) {
|
||||
if (storyTypes.containsKey(id.getId())) {
|
||||
return storyTypes.get(id.getId());
|
||||
} else {
|
||||
return StoryType.NONE;
|
||||
|
@ -2096,7 +2095,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
StoryType storyType = StoryType.fromCode(CursorUtil.requireInt(cursor, STORY_TYPE));
|
||||
|
||||
if (!recipientId.equals(releaseChannelId)) {
|
||||
result.add(new MarkedMessageInfo(threadId, syncMessageId, new MessageId(messageId, true), expirationInfo));
|
||||
result.add(new MarkedMessageInfo(threadId, syncMessageId, new MessageId(messageId), expirationInfo));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2698,7 +2697,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
}
|
||||
|
||||
if (updated) {
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId, true));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId));
|
||||
notifyConversationListeners(threadId);
|
||||
}
|
||||
}
|
||||
|
@ -2863,7 +2862,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
|
||||
if (!message.getStoryType().isStory()) {
|
||||
if (message.getOutgoingQuote() == null) {
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageInsertObservers(threadId, new MessageId(messageId, true));
|
||||
ApplicationDependencies.getDatabaseObserver().notifyMessageInsertObservers(threadId, new MessageId(messageId));
|
||||
} else {
|
||||
ApplicationDependencies.getDatabaseObserver().notifyConversationListeners(threadId);
|
||||
}
|
||||
|
@ -3702,7 +3701,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
|
|||
|
||||
long id = CursorExtensionsKt.readToSingleLong(cursor, -1);
|
||||
if (id != -1) {
|
||||
return new MessageId(id, TABLE_NAME.equals(MessageTable.TABLE_NAME));
|
||||
return new MessageId(id);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -277,10 +277,6 @@ public class MmsSmsTable extends DatabaseTable {
|
|||
}
|
||||
|
||||
public MessageId getRootOfQuoteChain(@NonNull MessageId id) {
|
||||
if (!id.isMms()) {
|
||||
return id;
|
||||
}
|
||||
|
||||
MmsMessageRecord targetMessage;
|
||||
try {
|
||||
targetMessage = (MmsMessageRecord) SignalDatabase.messages().getMessageRecord(id.getId());
|
||||
|
@ -302,7 +298,7 @@ public class MmsSmsTable extends DatabaseTable {
|
|||
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 getRootOfQuoteChain(new MessageId(record.getId()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -312,7 +308,7 @@ public class MmsSmsTable extends DatabaseTable {
|
|||
public List<MessageRecord> getAllMessagesThatQuote(@NonNull MessageId id) {
|
||||
MessageRecord targetMessage;
|
||||
try {
|
||||
targetMessage = id.isMms() ? SignalDatabase.messages().getMessageRecord(id.getId()) : SignalDatabase.messages().getMessageRecord(id.getId());
|
||||
targetMessage = SignalDatabase.messages().getMessageRecord(id.getId());
|
||||
} catch (NoSuchMessageException e) {
|
||||
throw new IllegalArgumentException("Invalid message ID!");
|
||||
}
|
||||
|
@ -327,7 +323,7 @@ public class MmsSmsTable extends DatabaseTable {
|
|||
MessageRecord record;
|
||||
while ((record = reader.getNext()) != null) {
|
||||
records.add(record);
|
||||
records.addAll(getAllMessagesThatQuote(new MessageId(record.getId(), record.isMms())));
|
||||
records.addAll(getAllMessagesThatQuote(new MessageId(record.getId())));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -442,11 +438,7 @@ public class MmsSmsTable extends DatabaseTable {
|
|||
}
|
||||
|
||||
public long getThreadId(MessageId messageId) {
|
||||
if (messageId.isMms()) {
|
||||
return SignalDatabase.messages().getThreadIdForMessage(messageId.getId());
|
||||
} else {
|
||||
return SignalDatabase.messages().getThreadIdForMessage(messageId.getId());
|
||||
}
|
||||
return SignalDatabase.messages().getThreadIdForMessage(messageId.getId());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -90,8 +90,7 @@ class ReactionTable(context: Context, databaseHelper: SignalDatabase) : Database
|
|||
while (cursor.moveToNext()) {
|
||||
val reaction: ReactionRecord = readReaction(cursor)
|
||||
val messageId = MessageId(
|
||||
id = CursorUtil.requireLong(cursor, MESSAGE_ID),
|
||||
mms = CursorUtil.requireBoolean(cursor, IS_MMS)
|
||||
id = CursorUtil.requireLong(cursor, MESSAGE_ID)
|
||||
)
|
||||
|
||||
var reactionsList: MutableList<ReactionRecord>? = messageIdToReactions[messageId]
|
||||
|
@ -114,7 +113,7 @@ class ReactionTable(context: Context, databaseHelper: SignalDatabase) : Database
|
|||
try {
|
||||
val values = ContentValues().apply {
|
||||
put(MESSAGE_ID, messageId.id)
|
||||
put(IS_MMS, if (messageId.mms) 1 else 0)
|
||||
put(IS_MMS, 0)
|
||||
put(EMOJI, reaction.emoji)
|
||||
put(AUTHOR_ID, reaction.author.serialize())
|
||||
put(DATE_SENT, reaction.dateSent)
|
||||
|
@ -122,12 +121,7 @@ class ReactionTable(context: Context, databaseHelper: SignalDatabase) : Database
|
|||
}
|
||||
|
||||
writableDatabase.insert(TABLE_NAME, null, values)
|
||||
|
||||
if (messageId.mms) {
|
||||
SignalDatabase.messages.updateReactionsUnread(writableDatabase, messageId.id, hasReactions(messageId), false)
|
||||
} else {
|
||||
SignalDatabase.messages.updateReactionsUnread(writableDatabase, messageId.id, hasReactions(messageId), false)
|
||||
}
|
||||
SignalDatabase.messages.updateReactionsUnread(writableDatabase, messageId.id, hasReactions(messageId), false)
|
||||
|
||||
writableDatabase.setTransactionSuccessful()
|
||||
} finally {
|
||||
|
@ -140,16 +134,12 @@ class ReactionTable(context: Context, databaseHelper: SignalDatabase) : Database
|
|||
fun deleteReaction(messageId: MessageId, recipientId: RecipientId) {
|
||||
writableDatabase.beginTransaction()
|
||||
try {
|
||||
val query = "$MESSAGE_ID = ? AND $IS_MMS = ? AND $AUTHOR_ID = ?"
|
||||
val args = SqlUtil.buildArgs(messageId.id, if (messageId.mms) 1 else 0, recipientId)
|
||||
writableDatabase
|
||||
.delete(TABLE_NAME)
|
||||
.where("$MESSAGE_ID = ? AND $AUTHOR_ID = ?", messageId.id, recipientId)
|
||||
.run()
|
||||
|
||||
writableDatabase.delete(TABLE_NAME, query, args)
|
||||
|
||||
if (messageId.mms) {
|
||||
SignalDatabase.messages.updateReactionsUnread(writableDatabase, messageId.id, hasReactions(messageId), true)
|
||||
} else {
|
||||
SignalDatabase.messages.updateReactionsUnread(writableDatabase, messageId.id, hasReactions(messageId), true)
|
||||
}
|
||||
SignalDatabase.messages.updateReactionsUnread(writableDatabase, messageId.id, hasReactions(messageId), true)
|
||||
|
||||
writableDatabase.setTransactionSuccessful()
|
||||
} finally {
|
||||
|
@ -160,7 +150,10 @@ class ReactionTable(context: Context, databaseHelper: SignalDatabase) : Database
|
|||
}
|
||||
|
||||
fun deleteReactions(messageId: MessageId) {
|
||||
writableDatabase.delete(TABLE_NAME, "$MESSAGE_ID = ? AND $IS_MMS = ?", SqlUtil.buildArgs(messageId.id, if (messageId.mms) 1 else 0))
|
||||
writableDatabase
|
||||
.delete(TABLE_NAME)
|
||||
.where("$MESSAGE_ID = ?", messageId.id)
|
||||
.run()
|
||||
}
|
||||
|
||||
fun hasReaction(messageId: MessageId, reaction: ReactionRecord): Boolean {
|
||||
|
|
|
@ -184,7 +184,7 @@ class StorySendTable(context: Context, databaseHelper: SignalDatabase) : Databas
|
|||
null
|
||||
).use { cursor ->
|
||||
while (cursor.moveToNext()) {
|
||||
messageIds += MessageId(cursor.requireLong(MESSAGE_ID), true)
|
||||
messageIds += MessageId(cursor.requireLong(MESSAGE_ID))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,31 +4,14 @@ import android.os.Parcelable
|
|||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
* Represents a pair of values that can be used to find a message. Because we have two tables,
|
||||
* that means this has both the primary key and a boolean indicating which table it's in.
|
||||
* Represents the primary key in a [MessageId].
|
||||
*/
|
||||
@Parcelize
|
||||
data class MessageId(
|
||||
val id: Long,
|
||||
@get:JvmName("isMms") val mms: Boolean
|
||||
val id: Long
|
||||
) : Parcelable {
|
||||
fun serialize(): String {
|
||||
return "$id|$mms"
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (this === other) return true
|
||||
if (javaClass != other?.javaClass) return false
|
||||
|
||||
other as MessageId
|
||||
|
||||
if (id != other.id) return false
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return id.hashCode()
|
||||
return "$id|true"
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
@ -36,9 +19,9 @@ data class MessageId(
|
|||
* Returns null for invalid IDs. Useful when pulling a possibly-unset ID from a database, or something like that.
|
||||
*/
|
||||
@JvmStatic
|
||||
fun fromNullable(id: Long, mms: Boolean): MessageId? {
|
||||
fun fromNullable(id: Long): MessageId? {
|
||||
return if (id > 0) {
|
||||
MessageId(id, mms)
|
||||
MessageId(id)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
|
@ -47,7 +30,7 @@ data class MessageId(
|
|||
@JvmStatic
|
||||
fun deserialize(serialized: String): MessageId {
|
||||
val parts: List<String> = serialized.split("|")
|
||||
return MessageId(parts[0].toLong(), parts[1].toBoolean())
|
||||
return MessageId(parts[0].toLong())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ import kotlin.math.abs
|
|||
sealed class ParentStoryId(protected val id: Long) {
|
||||
abstract fun serialize(): Long
|
||||
|
||||
fun asMessageId(): MessageId = MessageId(abs(id), true)
|
||||
fun asMessageId(): MessageId = MessageId(abs(id))
|
||||
fun isGroupReply() = serialize() > 0
|
||||
fun isDirectReply() = !isGroupReply()
|
||||
|
||||
|
|
|
@ -167,7 +167,7 @@ class SignalSmsExportReader(
|
|||
val sender: String = if (record.isOutgoing) Recipient.self().smsExportAddress() else record.individualRecipient.smsExportAddress()
|
||||
|
||||
return ExportableMessage.Mms(
|
||||
id = MessageId(record.id, record.isMms),
|
||||
id = MessageId(record.id),
|
||||
exportState = mapExportState(exportState),
|
||||
addresses = addresses,
|
||||
dateReceived = record.dateReceived.milliseconds,
|
||||
|
@ -186,7 +186,7 @@ class SignalSmsExportReader(
|
|||
readExportableMmsMessageFromRecord(record, exportState)
|
||||
} else {
|
||||
ExportableMessage.Sms(
|
||||
id = MessageId(record.id, record.isMms),
|
||||
id = MessageId(record.id),
|
||||
exportState = mapExportState(exportState),
|
||||
address = record.recipient.smsExportAddress(),
|
||||
dateReceived = record.dateReceived.milliseconds,
|
||||
|
|
|
@ -215,7 +215,7 @@ public final class PushDistributionListSendJob extends PushSendJob {
|
|||
|
||||
Log.d(TAG, "[" + messageId + "] Sending a story message with a manifest of size " + manifestCollection.size());
|
||||
|
||||
return GroupSendUtil.sendStoryMessage(context, message.getRecipient().requireDistributionListId(), destinations, isRecipientUpdate, new MessageId(messageId, true), message.getSentTimeMillis(), storyMessage, manifestCollection);
|
||||
return GroupSendUtil.sendStoryMessage(context, message.getRecipient().requireDistributionListId(), destinations, isRecipientUpdate, new MessageId(messageId), message.getSentTimeMillis(), storyMessage, manifestCollection);
|
||||
} catch (ServerRejectedException e) {
|
||||
throw new UndeliverableMessageException(e);
|
||||
}
|
||||
|
|
|
@ -274,7 +274,7 @@ public final class PushGroupSendJob extends PushSendJob {
|
|||
throw new UndeliverableMessageException("No attachment on non-text story.");
|
||||
}
|
||||
|
||||
return GroupSendUtil.sendGroupStoryMessage(context, groupId.requireV2(), destinations, isRecipientUpdate, new MessageId(messageId, true), message.getSentTimeMillis(), storyMessage);
|
||||
return GroupSendUtil.sendGroupStoryMessage(context, groupId.requireV2(), destinations, isRecipientUpdate, new MessageId(messageId), message.getSentTimeMillis(), storyMessage);
|
||||
} else {
|
||||
throw new UndeliverableMessageException("No group found! " + groupId);
|
||||
}
|
||||
|
@ -296,7 +296,7 @@ public final class PushGroupSendJob extends PushSendJob {
|
|||
.withExpiration(groupRecipient.getExpiresInSeconds())
|
||||
.asGroupMessage(group)
|
||||
.build();
|
||||
return GroupSendUtil.sendResendableDataMessage(context, groupRecipient.requireGroupId().requireV2(), null, destinations, isRecipientUpdate, ContentHint.IMPLICIT, new MessageId(messageId, true), groupDataMessage, message.isUrgent(), false);
|
||||
return GroupSendUtil.sendResendableDataMessage(context, groupRecipient.requireGroupId().requireV2(), null, destinations, isRecipientUpdate, ContentHint.IMPLICIT, new MessageId(messageId), groupDataMessage, message.isUrgent(), false);
|
||||
} else {
|
||||
throw new UndeliverableMessageException("Messages can no longer be sent to V1 groups!");
|
||||
}
|
||||
|
@ -355,7 +355,7 @@ public final class PushGroupSendJob extends PushSendJob {
|
|||
destinations,
|
||||
isRecipientUpdate,
|
||||
ContentHint.RESENDABLE,
|
||||
new MessageId(messageId, true),
|
||||
new MessageId(messageId),
|
||||
groupMessageBuilder.build(),
|
||||
message.isUrgent(),
|
||||
message.getStoryType().isStory() || message.getParentStoryId() != null);
|
||||
|
|
|
@ -261,12 +261,12 @@ public class PushMediaSendJob extends PushSendJob {
|
|||
if (Util.equals(SignalStore.account().getAci(), address.getServiceId())) {
|
||||
Optional<UnidentifiedAccessPair> syncAccess = UnidentifiedAccessUtil.getAccessForSync(context);
|
||||
SendMessageResult result = messageSender.sendSyncMessage(mediaMessage);
|
||||
SignalDatabase.messageLog().insertIfPossible(messageRecipient.getId(), message.getSentTimeMillis(), result, ContentHint.RESENDABLE, new MessageId(messageId, true), false);
|
||||
SignalDatabase.messageLog().insertIfPossible(messageRecipient.getId(), message.getSentTimeMillis(), result, ContentHint.RESENDABLE, new MessageId(messageId), false);
|
||||
return syncAccess.isPresent();
|
||||
} else {
|
||||
SendMessageResult result = messageSender.sendDataMessage(address, UnidentifiedAccessUtil.getAccessFor(context, messageRecipient), ContentHint.RESENDABLE, mediaMessage, IndividualSendEvents.EMPTY, message.isUrgent(), messageRecipient.needsPniSignature());
|
||||
|
||||
SignalDatabase.messageLog().insertIfPossible(messageRecipient.getId(), message.getSentTimeMillis(), result, ContentHint.RESENDABLE, new MessageId(messageId, true), message.isUrgent());
|
||||
SignalDatabase.messageLog().insertIfPossible(messageRecipient.getId(), message.getSentTimeMillis(), result, ContentHint.RESENDABLE, new MessageId(messageId), message.isUrgent());
|
||||
|
||||
if (messageRecipient.needsPniSignature()) {
|
||||
SignalDatabase.pendingPniSignatureMessages().insertIfNecessary(messageRecipient.getId(), message.getSentTimeMillis(), result);
|
||||
|
|
|
@ -44,7 +44,6 @@ public class ReactionSendJob extends BaseJob {
|
|||
private static final String TAG = Log.tag(ReactionSendJob.class);
|
||||
|
||||
private static final String KEY_MESSAGE_ID = "message_id";
|
||||
private static final String KEY_IS_MMS = "is_mms";
|
||||
private static final String KEY_REACTION_EMOJI = "reaction_emoji";
|
||||
private static final String KEY_REACTION_AUTHOR = "reaction_author";
|
||||
private static final String KEY_REACTION_DATE_SENT = "reaction_date_sent";
|
||||
|
@ -67,8 +66,7 @@ public class ReactionSendJob extends BaseJob {
|
|||
boolean remove)
|
||||
throws NoSuchMessageException
|
||||
{
|
||||
MessageRecord message = messageId.isMms() ? SignalDatabase.messages().getMessageRecord(messageId.getId())
|
||||
: SignalDatabase.messages().getSmsMessage(messageId.getId());
|
||||
MessageRecord message = SignalDatabase.messages().getMessageRecord(messageId.getId());
|
||||
|
||||
Recipient conversationRecipient = SignalDatabase.threads().getRecipientForThreadId(message.getThreadId());
|
||||
|
||||
|
@ -116,7 +114,6 @@ public class ReactionSendJob extends BaseJob {
|
|||
@Override
|
||||
public @NonNull Data serialize() {
|
||||
return new Data.Builder().putLong(KEY_MESSAGE_ID, messageId.getId())
|
||||
.putBoolean(KEY_IS_MMS, messageId.isMms())
|
||||
.putString(KEY_REACTION_EMOJI, reaction.getEmoji())
|
||||
.putString(KEY_REACTION_AUTHOR, reaction.getAuthor().serialize())
|
||||
.putLong(KEY_REACTION_DATE_SENT, reaction.getDateSent())
|
||||
|
@ -139,14 +136,7 @@ public class ReactionSendJob extends BaseJob {
|
|||
}
|
||||
|
||||
ReactionTable reactionTable = SignalDatabase.reactions();
|
||||
|
||||
MessageRecord message;
|
||||
|
||||
if (messageId.isMms()) {
|
||||
message = SignalDatabase.messages().getMessageRecord(messageId.getId());
|
||||
} else {
|
||||
message = SignalDatabase.messages().getSmsMessage(messageId.getId());
|
||||
}
|
||||
MessageRecord message = SignalDatabase.messages().getMessageRecord(messageId.getId());
|
||||
|
||||
Recipient targetAuthor = message.isOutgoing() ? Recipient.self() : message.getIndividualRecipient();
|
||||
long targetSentTimestamp = message.getDateSent();
|
||||
|
@ -273,7 +263,6 @@ public class ReactionSendJob extends BaseJob {
|
|||
public @NonNull
|
||||
ReactionSendJob create(@NonNull Parameters parameters, @NonNull Data data) {
|
||||
long messageId = data.getLong(KEY_MESSAGE_ID);
|
||||
boolean isMms = data.getBoolean(KEY_IS_MMS);
|
||||
List<RecipientId> recipients = RecipientId.fromSerializedList(data.getString(KEY_RECIPIENTS));
|
||||
int initialRecipientCount = data.getInt(KEY_INITIAL_RECIPIENT_COUNT);
|
||||
ReactionRecord reaction = new ReactionRecord(data.getString(KEY_REACTION_EMOJI),
|
||||
|
@ -282,7 +271,7 @@ public class ReactionSendJob extends BaseJob {
|
|||
data.getLong(KEY_REACTION_DATE_RECEIVED));
|
||||
boolean remove = data.getBoolean(KEY_REMOVE);
|
||||
|
||||
return new ReactionSendJob(new MessageId(messageId, isMms), recipients, initialRecipientCount, reaction, remove, parameters);
|
||||
return new ReactionSendJob(new MessageId(messageId), recipients, initialRecipientCount, reaction, remove, parameters);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -229,7 +229,7 @@ public class RemoteDeleteSendJob extends BaseJob {
|
|||
destinations,
|
||||
false,
|
||||
ContentHint.RESENDABLE,
|
||||
new MessageId(messageId, isMms),
|
||||
new MessageId(messageId),
|
||||
dataMessage,
|
||||
true,
|
||||
isForStory);
|
||||
|
|
|
@ -37,7 +37,7 @@ public final class MessageDetailsRepository {
|
|||
private final Context context = ApplicationDependencies.getApplication();
|
||||
|
||||
@NonNull LiveData<MessageRecord> getMessageRecord(Long messageId) {
|
||||
return new MessageRecordLiveData(new MessageId(messageId, true));
|
||||
return new MessageRecordLiveData(new MessageId(messageId));
|
||||
}
|
||||
|
||||
@NonNull LiveData<MessageDetails> getMessageDetails(@Nullable MessageRecord messageRecord) {
|
||||
|
@ -56,9 +56,7 @@ public final class MessageDetailsRepository {
|
|||
return Observable.<MessageDetails>create(emitter -> {
|
||||
DatabaseObserver.MessageObserver messageObserver = mId -> {
|
||||
try {
|
||||
MessageRecord messageRecord = messageId.isMms() ? SignalDatabase.messages().getMessageRecord(messageId.getId())
|
||||
: SignalDatabase.messages().getMessageRecord(messageId.getId());
|
||||
|
||||
MessageRecord messageRecord = SignalDatabase.messages().getMessageRecord(messageId.getId());
|
||||
MessageDetails messageDetails = getRecipientDeliveryStatusesInternal(messageRecord);
|
||||
|
||||
emitter.onNext(messageDetails);
|
||||
|
|
|
@ -34,13 +34,8 @@ final class MessageRecordLiveData extends LiveData<MessageRecord> {
|
|||
|
||||
@WorkerThread
|
||||
private synchronized void retrieveMessageRecordActual() {
|
||||
retrieve(messageId.isMms() ? SignalDatabase.messages() : SignalDatabase.messages());
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
private synchronized void retrieve(MessageTable messageDatabase) {
|
||||
try {
|
||||
MessageRecord record = messageDatabase.getMessageRecord(messageId.getId());
|
||||
MessageRecord record = SignalDatabase.messages().getMessageRecord(messageId.getId());
|
||||
|
||||
if (record.isPaymentNotification()) {
|
||||
record = SignalDatabase.payments().updateMessageWithPayment(record);
|
||||
|
|
|
@ -471,7 +471,7 @@ public final class MessageContentProcessor {
|
|||
Optional<InsertResult> insertResult = SignalDatabase.messages().insertSecureDecryptedMessageInbox(mediaMessage, -1);
|
||||
smsMessageId.ifPresent(smsId -> SignalDatabase.messages().deleteMessage(smsId));
|
||||
if (insertResult.isPresent()) {
|
||||
messageId = new MessageId(insertResult.get().getMessageId(), true);
|
||||
messageId = new MessageId(insertResult.get().getMessageId());
|
||||
ApplicationDependencies.getMessageNotifier().updateNotification(context, ConversationId.forConversation(insertResult.get().getThreadId()));
|
||||
}
|
||||
} catch (PaymentTable.PublicKeyConflictException e) {
|
||||
|
@ -762,7 +762,7 @@ public final class MessageContentProcessor {
|
|||
SecurityEvent.broadcastSecurityUpdateEvent(context);
|
||||
ApplicationDependencies.getMessageNotifier().updateNotification(context, ConversationId.forConversation(insertResult.get().getThreadId()));
|
||||
|
||||
return new MessageId(insertResult.get().getMessageId(), true);
|
||||
return new MessageId(insertResult.get().getMessageId());
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
@ -875,7 +875,7 @@ public final class MessageContentProcessor {
|
|||
}
|
||||
|
||||
if (insertResult.isPresent()) {
|
||||
return new MessageId(insertResult.get().getMessageId(), true);
|
||||
return new MessageId(insertResult.get().getMessageId());
|
||||
}
|
||||
} catch (MmsException e) {
|
||||
throw new StorageFailedException(e, content.getSender().getIdentifier(), content.getSenderDevice());
|
||||
|
@ -948,7 +948,7 @@ public final class MessageContentProcessor {
|
|||
}
|
||||
|
||||
if (insertResult.isPresent()) {
|
||||
return new MessageId(insertResult.get().getMessageId(), true);
|
||||
return new MessageId(insertResult.get().getMessageId());
|
||||
}
|
||||
} catch (MmsException e) {
|
||||
throw new StorageFailedException(e, content.getSender().getIdentifier(), content.getSenderDevice());
|
||||
|
@ -1003,7 +1003,7 @@ public final class MessageContentProcessor {
|
|||
return null;
|
||||
}
|
||||
|
||||
MessageId targetMessageId = new MessageId(targetMessage.getId(), targetMessage.isMms());
|
||||
MessageId targetMessageId = new MessageId(targetMessage.getId());
|
||||
|
||||
if (reaction.isRemove()) {
|
||||
SignalDatabase.reactions().deleteReaction(targetMessageId, senderRecipient.getId());
|
||||
|
@ -1014,7 +1014,7 @@ public final class MessageContentProcessor {
|
|||
ApplicationDependencies.getMessageNotifier().updateNotification(context, ConversationId.fromMessageRecord(targetMessage), false);
|
||||
}
|
||||
|
||||
return new MessageId(targetMessage.getId(), targetMessage.isMms());
|
||||
return new MessageId(targetMessage.getId());
|
||||
}
|
||||
|
||||
private @Nullable MessageId handleRemoteDelete(@NonNull SignalServiceContent content, @NonNull SignalServiceDataMessage message, @NonNull Recipient senderRecipient) {
|
||||
|
@ -1031,7 +1031,7 @@ public final class MessageContentProcessor {
|
|||
db.deleteRemotelyDeletedStory(targetMessage.getId());
|
||||
}
|
||||
ApplicationDependencies.getMessageNotifier().updateNotification(context, ConversationId.fromMessageRecord(targetMessage), false);
|
||||
return new MessageId(targetMessage.getId(), targetMessage.isMms());
|
||||
return new MessageId(targetMessage.getId());
|
||||
} else if (targetMessage == null) {
|
||||
warn(String.valueOf(content.getTimestamp()), "[handleRemoteDelete] Could not find matching message! timestamp: " + delete.getTargetSentTimestamp() + " author: " + senderRecipient.getId());
|
||||
if (!processingEarlyContent) {
|
||||
|
@ -1684,7 +1684,7 @@ public final class MessageContentProcessor {
|
|||
}
|
||||
|
||||
if (parentStoryId.isDirectReply()) {
|
||||
return MessageId.fromNullable(insertResult.get().getMessageId(), true);
|
||||
return MessageId.fromNullable(insertResult.get().getMessageId());
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
@ -1784,7 +1784,7 @@ public final class MessageContentProcessor {
|
|||
}
|
||||
|
||||
if (parentStoryId.isDirectReply()) {
|
||||
return MessageId.fromNullable(insertResult.get().getMessageId(), true);
|
||||
return MessageId.fromNullable(insertResult.get().getMessageId());
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
@ -1855,7 +1855,7 @@ public final class MessageContentProcessor {
|
|||
ApplicationDependencies.getMessageNotifier().updateNotification(context, ConversationId.forConversation(insertResult.get().getThreadId()));
|
||||
TrimThreadJob.enqueueAsync(insertResult.get().getThreadId());
|
||||
|
||||
return new MessageId(insertResult.get().getMessageId(), true);
|
||||
return new MessageId(insertResult.get().getMessageId());
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
@ -1945,7 +1945,7 @@ public final class MessageContentProcessor {
|
|||
ApplicationDependencies.getViewOnceMessageManager().scheduleIfNecessary();
|
||||
}
|
||||
|
||||
return new MessageId(insertResult.get().getMessageId(), true);
|
||||
return new MessageId(insertResult.get().getMessageId());
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
@ -2400,7 +2400,7 @@ public final class MessageContentProcessor {
|
|||
|
||||
if (insertResult.isPresent()) {
|
||||
ApplicationDependencies.getMessageNotifier().updateNotification(context, ConversationId.forConversation(insertResult.get().getThreadId()));
|
||||
return new MessageId(insertResult.get().getMessageId(), false);
|
||||
return new MessageId(insertResult.get().getMessageId());
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
@ -2867,12 +2867,7 @@ public final class MessageContentProcessor {
|
|||
private @Nullable MessageRecord findRetryReceiptRelatedMessage(@NonNull Context context, @Nullable MessageLogEntry messageLogEntry, long sentTimestamp) {
|
||||
if (messageLogEntry != null && messageLogEntry.hasRelatedMessage()) {
|
||||
MessageId relatedMessage = messageLogEntry.getRelatedMessages().get(0);
|
||||
|
||||
if (relatedMessage.isMms()) {
|
||||
return SignalDatabase.messages().getMessageRecordOrNull(relatedMessage.getId());
|
||||
} else {
|
||||
return SignalDatabase.messages().getMessageRecordOrNull(relatedMessage.getId());
|
||||
}
|
||||
return SignalDatabase.messages().getMessageRecordOrNull(relatedMessage.getId());
|
||||
} else {
|
||||
return SignalDatabase.mmsSms().getMessageFor(sentTimestamp, Recipient.self().getId());
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ object NotificationStateProvider {
|
|||
|
||||
messages += NotificationMessage(
|
||||
messageRecord = record,
|
||||
reactions = if (hasUnreadReactions) SignalDatabase.reactions.getReactions(MessageId(record.id, record.isMms)) else emptyList(),
|
||||
reactions = if (hasUnreadReactions) SignalDatabase.reactions.getReactions(MessageId(record.id)) else emptyList(),
|
||||
threadRecipient = threadRecipient,
|
||||
thread = conversationId,
|
||||
stickyThread = stickyThreads.containsKey(conversationId),
|
||||
|
|
|
@ -49,7 +49,7 @@ object NotificationThumbnails {
|
|||
return NotificationItem.ThumbnailInfo(thumbnailSlide.publicUri, thumbnailSlide.contentType)
|
||||
}
|
||||
|
||||
val messageId = MessageId(notificationItem.id, notificationItem.isMms)
|
||||
val messageId = MessageId(notificationItem.id)
|
||||
val thumbnail: CachedThumbnail? = synchronized(thumbnailCache) { thumbnailCache[messageId] }
|
||||
|
||||
if (thumbnail != null) {
|
||||
|
@ -110,7 +110,7 @@ object NotificationThumbnails {
|
|||
}
|
||||
|
||||
fun removeAllExcept(notificationItems: List<NotificationItem>) {
|
||||
val currentMessages = notificationItems.map { MessageId(it.id, it.isMms) }
|
||||
val currentMessages = notificationItems.map { MessageId(it.id) }
|
||||
synchronized(thumbnailCache) {
|
||||
thumbnailCache.keys.removeIf { !currentMessages.contains(it) }
|
||||
}
|
||||
|
|
|
@ -101,7 +101,7 @@ public final class ReactionsBottomSheetDialogFragment extends BottomSheetDialogF
|
|||
setUpRecipientsRecyclerView();
|
||||
setUpTabMediator(view, savedInstanceState);
|
||||
|
||||
MessageId messageId = new MessageId(requireArguments().getLong(ARGS_MESSAGE_ID), requireArguments().getBoolean(ARGS_IS_MMS));
|
||||
MessageId messageId = new MessageId(requireArguments().getLong(ARGS_MESSAGE_ID));
|
||||
setUpViewModel(messageId);
|
||||
}
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ public final class ReactWithAnyEmojiViewModel extends ViewModel {
|
|||
this.searchResults = BehaviorSubject.createDefault(new EmojiSearchResult());
|
||||
this.selectedKey = BehaviorSubject.createDefault(getStartingKey());
|
||||
|
||||
Observable<List<ReactWithAnyEmojiPage>> emojiPages = new ReactionsRepository().getReactions(new MessageId(messageId, isMms))
|
||||
Observable<List<ReactWithAnyEmojiPage>> emojiPages = new ReactionsRepository().getReactions(new MessageId(messageId))
|
||||
.map(repository::getEmojiPageModels);
|
||||
|
||||
Observable<MappingModelList> emojiList = emojiPages.map(pages -> {
|
||||
|
@ -111,7 +111,7 @@ public final class ReactWithAnyEmojiViewModel extends ViewModel {
|
|||
void onEmojiSelected(@NonNull String emoji) {
|
||||
if (messageId > 0) {
|
||||
SignalStore.emojiValues().setPreferredVariation(emoji);
|
||||
repository.addEmojiToMessage(emoji, new MessageId(messageId, isMms));
|
||||
repository.addEmojiToMessage(emoji, new MessageId(messageId));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@ object SafetyNumberBottomSheet {
|
|||
val args = SafetyNumberBottomSheetArgs(
|
||||
untrustedRecipients = messageRecord.identityKeyMismatches.map { it.getRecipientId(context) },
|
||||
destinations = getDestinationFromRecord(messageRecord),
|
||||
messageId = MessageId(messageRecord.id, messageRecord.isMms)
|
||||
messageId = MessageId(messageRecord.id)
|
||||
)
|
||||
|
||||
return SheetFactory(args)
|
||||
|
|
|
@ -22,7 +22,7 @@ class StoryInfoViewModel(storyId: Long, repository: MessageDetailsRepository = M
|
|||
val state: Flowable<StoryInfoState> = store.stateFlowable.observeOn(AndroidSchedulers.mainThread())
|
||||
|
||||
init {
|
||||
disposables += store.update(repository.getMessageDetails(MessageId(storyId, true)).toFlowable(BackpressureStrategy.LATEST)) { messageDetails, storyInfoState ->
|
||||
disposables += store.update(repository.getMessageDetails(MessageId(storyId)).toFlowable(BackpressureStrategy.LATEST)) { messageDetails, storyInfoState ->
|
||||
storyInfoState.copy(
|
||||
messageDetails = messageDetails
|
||||
)
|
||||
|
|
|
@ -99,7 +99,7 @@ open class StoryViewerPageRepository(context: Context, private val storyViewStat
|
|||
val recipient = Recipient.resolved(recipientId)
|
||||
|
||||
val messageUpdateObserver = DatabaseObserver.MessageObserver {
|
||||
if (it.mms && it.id == recordId) {
|
||||
if (it.id == recordId) {
|
||||
try {
|
||||
val messageRecord = SignalDatabase.messages.getMessageRecord(recordId)
|
||||
if (messageRecord.isRemoteDelete) {
|
||||
|
@ -185,7 +185,7 @@ open class StoryViewerPageRepository(context: Context, private val storyViewStat
|
|||
markedMessageInfo.threadId,
|
||||
storyPost.sender.id,
|
||||
markedMessageInfo.syncMessageId.timetamp,
|
||||
MessageId(storyPost.id, true)
|
||||
MessageId(storyPost.id)
|
||||
)
|
||||
)
|
||||
MultiDeviceViewedUpdateJob.enqueue(listOf(markedMessageInfo.syncMessageId))
|
||||
|
|
|
@ -7,7 +7,7 @@ import org.thoughtcrime.securesms.recipients.Recipient
|
|||
|
||||
sealed class ReplyBody(val messageRecord: MessageRecord) {
|
||||
|
||||
val key: MessageId = MessageId(messageRecord.id, true)
|
||||
val key: MessageId = MessageId(messageRecord.id)
|
||||
val sender: Recipient = if (messageRecord.isOutgoing) Recipient.self() else messageRecord.individualRecipient.resolve()
|
||||
val sentAtMillis: Long = messageRecord.dateSent
|
||||
|
||||
|
|
|
@ -107,7 +107,7 @@ public class MarkReadReceiverTest {
|
|||
private MessageTable.MarkedMessageInfo createMarkedMessageInfo(long threadId, @NonNull RecipientId recipientId) {
|
||||
return new MessageTable.MarkedMessageInfo(threadId,
|
||||
new MessageTable.SyncMessageId(recipientId, 0),
|
||||
new MessageId(1, true),
|
||||
new MessageId(1),
|
||||
new MessageTable.ExpirationInfo(0, 0, 0, false));
|
||||
}
|
||||
}
|
Ładowanie…
Reference in New Issue