From 6708104efa70a975442abed929df8f3af3121e05 Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Wed, 26 Oct 2022 10:50:07 +1100 Subject: [PATCH] update database migration --- .../_011_DisappearingMessageType.swift | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/SessionMessagingKit/Database/Migrations/_011_DisappearingMessageType.swift b/SessionMessagingKit/Database/Migrations/_011_DisappearingMessageType.swift index 6832d6f54..9b53c159f 100644 --- a/SessionMessagingKit/Database/Migrations/_011_DisappearingMessageType.swift +++ b/SessionMessagingKit/Database/Migrations/_011_DisappearingMessageType.swift @@ -15,14 +15,32 @@ enum _011_DisappearingMessageType: Migration { t.add(.type, .integer) } - _ = try DisappearingMessagesConfiguration - .filter(DisappearingMessagesConfiguration.Columns.isEnabled == true) - .updateAll( - db, - DisappearingMessagesConfiguration.Columns.type.set( - to: DisappearingMessagesConfiguration.DisappearingMessageType.disappearAfterRead + func updateDisappearingMessageType(_ db: GRDB.Database, id: String, type: DisappearingMessagesConfiguration.DisappearingMessageType) throws { + _ = try DisappearingMessagesConfiguration + .filter(DisappearingMessagesConfiguration.Columns.threadId == id) + .updateAll( + db, + DisappearingMessagesConfiguration.Columns.type.set(to: type) ) - ) + } + + try DisappearingMessagesConfiguration + .filter(DisappearingMessagesConfiguration.Columns.isEnabled == true) + .fetchAll(db) + .forEach { config in + if let thread = try? SessionThread.fetchOne(db, id: config.threadId) { + guard !thread.isNoteToSelf(db) else { + try updateDisappearingMessageType(db, id: config.threadId, type: .disappearAfterSend) + return + } + + switch thread.variant { + case .contact: try updateDisappearingMessageType(db, id: config.threadId, type: .disappearAfterRead) + case .closedGroup: try updateDisappearingMessageType(db, id: config.threadId, type: .disappearAfterSend) + case .openGroup: return + } + } + } Storage.update(progress: 1, for: self, in: target) // In case this is the last migration }