Skip to content

Commit

Permalink
Fix position calculation for conversations with scheduled messages.
Browse files Browse the repository at this point in the history
  • Loading branch information
cody-signal committed Feb 2, 2023
1 parent fe2d71f commit 35ff977
Showing 1 changed file with 10 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3366,7 +3366,8 @@ public void deleteRemotelyDeletedStory(long messageId) {

public List<MessageRecord> getMessagesInThreadAfterInclusive(long threadId, long timestamp, long limit) {
String where = TABLE_NAME + "." + THREAD_ID + " = ? AND " +
TABLE_NAME + "." + DATE_RECEIVED + " >= ?";
TABLE_NAME + "." + DATE_RECEIVED + " >= ? AND " +
TABLE_NAME + "." + SCHEDULED_DATE + " = -1";
String[] args = SqlUtil.buildArgs(threadId, timestamp);

try (MmsReader reader = mmsReaderFor(rawQuery(where, args, false, limit))) {
Expand Down Expand Up @@ -4038,12 +4039,14 @@ public int getMessagePositionInConversation(long threadId, long groupStoryId, lo
order = MessageTable.DATE_RECEIVED + " ASC";
selection = MessageTable.THREAD_ID + " = " + threadId + " AND " +
MessageTable.DATE_RECEIVED + " < " + receivedTimestamp + " AND " +
MessageTable.STORY_TYPE + " = 0 AND " + MessageTable.PARENT_STORY_ID + " = " + groupStoryId;
MessageTable.STORY_TYPE + " = 0 AND " + MessageTable.PARENT_STORY_ID + " = " + groupStoryId + " AND " +
MessageTable.SCHEDULED_DATE + " = -1";
} else {
order = MessageTable.DATE_RECEIVED + " DESC";
selection = MessageTable.THREAD_ID + " = " + threadId + " AND " +
MessageTable.DATE_RECEIVED + " > " + receivedTimestamp + " AND " +
MessageTable.STORY_TYPE + " = 0 AND " + MessageTable.PARENT_STORY_ID + " <= 0";
MessageTable.STORY_TYPE + " = 0 AND " + MessageTable.PARENT_STORY_ID + " <= 0 AND " +
MessageTable.SCHEDULED_DATE + " = -1";
}

try (Cursor cursor = getReadableDatabase().query(TABLE_NAME, new String[] { "COUNT(*)" }, selection, null, null, null, order)) {
Expand All @@ -4057,7 +4060,7 @@ public int getMessagePositionInConversation(long threadId, long groupStoryId, lo
public long getTimestampForFirstMessageAfterDate(long date) {
String[] projection = new String[] { MessageTable.DATE_RECEIVED };
String order = MessageTable.DATE_RECEIVED + " ASC";
String selection = MessageTable.DATE_RECEIVED + " > " + date;
String selection = MessageTable.DATE_RECEIVED + " > " + date + " AND " + MessageTable.SCHEDULED_DATE + " = -1";

try (Cursor cursor = getReadableDatabase().query(TABLE_NAME, projection, selection, null, null, null, order, "1")) {
if (cursor != null && cursor.moveToFirst()) {
Expand All @@ -4069,7 +4072,7 @@ public long getTimestampForFirstMessageAfterDate(long date) {
}

public int getMessageCountBeforeDate(long date) {
String selection = MessageTable.DATE_RECEIVED + " < " + date;
String selection = MessageTable.DATE_RECEIVED + " < " + date + " AND " + MessageTable.SCHEDULED_DATE + " = -1";

try (Cursor cursor = getReadableDatabase().query(TABLE_NAME, COUNT, selection, null, null, null, null)) {
if (cursor != null && cursor.moveToFirst()) {
Expand All @@ -4093,7 +4096,8 @@ public int getMessagePositionOnOrAfterTimestamp(long threadId, long timestamp) {
String[] projection = new String[] { "COUNT(*)" };
String selection = MessageTable.THREAD_ID + " = " + threadId + " AND " +
MessageTable.DATE_RECEIVED + " >= " + timestamp + " AND " +
MessageTable.STORY_TYPE + " = 0 AND " + MessageTable.PARENT_STORY_ID + " <= 0";
MessageTable.STORY_TYPE + " = 0 AND " + MessageTable.PARENT_STORY_ID + " <= 0 AND " +
MessageTable.SCHEDULED_DATE + " = -1";

try (Cursor cursor = getReadableDatabase().query(TABLE_NAME, projection, selection, null, null, null, null)) {
if (cursor != null && cursor.moveToNext()) {
Expand Down

0 comments on commit 35ff977

Please sign in to comment.