From 0bfc337bcc1604ff74a0c5dbcb8b495e02ce0f20 Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Tue, 10 Jan 2023 15:19:37 +1100 Subject: [PATCH] add index & clean --- .../_011_DisappearingMessagesConfiguration.swift | 10 ++++++++++ .../Shared Models/SessionThreadViewModel.swift | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/SessionMessagingKit/Database/Migrations/_011_DisappearingMessagesConfiguration.swift b/SessionMessagingKit/Database/Migrations/_011_DisappearingMessagesConfiguration.swift index 10f690433..d8e7b4781 100644 --- a/SessionMessagingKit/Database/Migrations/_011_DisappearingMessagesConfiguration.swift +++ b/SessionMessagingKit/Database/Migrations/_011_DisappearingMessagesConfiguration.swift @@ -21,6 +21,16 @@ enum _011_DisappearingMessagesConfiguration: Migration { t.add(.lastKnownClientVersion, .integer) } + /// Add index on interaction table for wasRead and variant + /// + /// This is due to new disappearing messages will need some info messages to be able to be unread, + /// but we only want to count the unread message number by incoming visible messages and call messages. + try db.create( + index: "interaction_on_wasRead_and_variant", + on: Interaction.databaseTableName, + columns: [Interaction.Columns.wasRead, Interaction.Columns.variant].map { $0.name } + ) + func updateDisappearingMessageType(_ db: GRDB.Database, id: String, type: DisappearingMessagesConfiguration.DisappearingMessageType) throws { _ = try DisappearingMessagesConfiguration .filter(DisappearingMessagesConfiguration.Columns.threadId == id) diff --git a/SessionMessagingKit/Shared Models/SessionThreadViewModel.swift b/SessionMessagingKit/Shared Models/SessionThreadViewModel.swift index 0b5273c62..7fa807e40 100644 --- a/SessionMessagingKit/Shared Models/SessionThreadViewModel.swift +++ b/SessionMessagingKit/Shared Models/SessionThreadViewModel.swift @@ -551,7 +551,7 @@ public extension SessionThreadViewModel { \(interaction[.authorId]), \(interaction[.linkPreviewUrl]), - SUM(\(interaction[.wasRead]) = false AND \(interaction[.variant]) IN (\(Interaction.Variant.standardIncoming), \(Interaction.Variant.infoCall))) AS \(ViewModel.threadUnreadCountKey), + SUM(\(interaction[.wasRead]) = false AND \(interaction[.variant]) IN \(Interaction.Variant.variantsToIncrementUnreadCount)) AS \(ViewModel.threadUnreadCountKey), SUM(\(interaction[.wasRead]) = false AND \(interaction[.hasMention]) = true) AS \(ViewModel.threadUnreadMentionCountKey), (SUM(\(interaction[.wasRead]) = false) > 0) AS \(ViewModel.threadHasUnreadMessagesOfAnyKindKey) @@ -805,7 +805,7 @@ public extension SessionThreadViewModel { \(interaction[.threadId]), MAX(\(interaction[.timestampMs])), - SUM(\(interaction[.wasRead]) = false AND \(interaction[.variant]) IN (\(Interaction.Variant.standardIncoming), \(Interaction.Variant.infoCall))) AS \(ViewModel.threadUnreadCountKey), + SUM(\(interaction[.wasRead]) = false AND \(interaction[.variant]) IN \(Interaction.Variant.variantsToIncrementUnreadCount)) AS \(ViewModel.threadUnreadCountKey), (SUM(\(interaction[.wasRead]) = false) > 0) AS \(ViewModel.threadHasUnreadMessagesOfAnyKindKey) FROM \(Interaction.self)