diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java index 63109b5b74..1faa6e2311 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java @@ -817,7 +817,7 @@ public final class ConversationUpdateItem extends FrameLayout private void presentTimer(UpdateDescription updateDescription) { if (updateDescription.hasExpiration() && messageRecord.getExpiresIn() > 0) { - timer = new ExpirationTimer(messageRecord.getTimestamp(), messageRecord.getExpiresIn()); + timer = new ExpirationTimer(messageRecord.getExpireStarted(), messageRecord.getExpiresIn()); handler.post(timerUpdateRunnable); } else { latestFrame = 0; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt index 3d0ad7b41d..75e4438a71 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt @@ -2823,7 +2823,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat retrieved.type == MessageType.IDENTITY_VERIFIED || retrieved.type == MessageType.IDENTITY_UPDATE - val read = silent || retrieved.type == MessageType.EXPIRATION_UPDATE || MessageTypes.isPinnedMessageUpdate(type) + val read = silent || retrieved.type == MessageType.EXPIRATION_UPDATE val contentValues = contentValuesOf( DATE_SENT to retrieved.sentTimeMillis, @@ -2882,6 +2882,8 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat .readToSingleInt(0) contentValues.put(NOTIFIED, notified.toInt()) + } else if (MessageTypes.isPinnedMessageUpdate(type)) { + contentValues.put(NOTIFIED, 1) } val updateThread = retrieved.storyType === StoryType.NONE && !silent @@ -4748,10 +4750,11 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat } fun getUnreadCount(threadId: Long): Int { + val pinnedMessageClause = "($TYPE & ${MessageTypes.SPECIAL_TYPES_MASK}) != ${MessageTypes.SPECIAL_TYPE_PINNED_MESSAGE}" return readableDatabase .select("COUNT(*)") .from("$TABLE_NAME INDEXED BY $INDEX_THREAD_UNREAD_COUNT") - .where("$THREAD_ID = $threadId AND $STORY_TYPE = 0 AND $PARENT_STORY_ID <= 0 AND $ORIGINAL_MESSAGE_ID IS NULL AND $SCHEDULED_DATE = -1 AND $READ = 0") + .where("$THREAD_ID = $threadId AND $STORY_TYPE = 0 AND $PARENT_STORY_ID <= 0 AND $ORIGINAL_MESSAGE_ID IS NULL AND $SCHEDULED_DATE = -1 AND $READ = 0 AND $pinnedMessageClause") .run() .readToSingleInt() }