lastChangeTimestamp migration

pull/941/head
ryanzhao 2 years ago
parent 03b3136316
commit 8377da0876

@ -114,7 +114,7 @@
7B4C75CD26BB92060000AC89 /* DeletedMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B4C75CC26BB92060000AC89 /* DeletedMessageView.swift */; };
7B50D64D28AC7CF80086CCEC /* silence.aiff in Resources */ = {isa = PBXBuildFile; fileRef = 7B50D64C28AC7CF80086CCEC /* silence.aiff */; };
7B5233C42900E90F00F8F375 /* PagedScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B5233C32900E90F00F8F375 /* PagedScrollView.swift */; };
7B5233C6290636D700F8F375 /* _011_DisappearingMessageType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B5233C5290636D700F8F375 /* _011_DisappearingMessageType.swift */; };
7B5233C6290636D700F8F375 /* _011_DisappearingMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B5233C5290636D700F8F375 /* _011_DisappearingMessage.swift */; };
7B7037432834B81F000DCF35 /* ReactionContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B7037422834B81F000DCF35 /* ReactionContainerView.swift */; };
7B7037452834BCC0000DCF35 /* ReactionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B7037442834BCC0000DCF35 /* ReactionView.swift */; };
7B7CB18E270D066F0079FF93 /* IncomingCallBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B7CB18D270D066F0079FF93 /* IncomingCallBanner.swift */; };
@ -1182,7 +1182,7 @@
7B4C75CC26BB92060000AC89 /* DeletedMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeletedMessageView.swift; sourceTree = "<group>"; };
7B50D64C28AC7CF80086CCEC /* silence.aiff */ = {isa = PBXFileReference; lastKnownFileType = audio.aiff; path = silence.aiff; sourceTree = "<group>"; };
7B5233C32900E90F00F8F375 /* PagedScrollView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PagedScrollView.swift; sourceTree = "<group>"; };
7B5233C5290636D700F8F375 /* _011_DisappearingMessageType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = _011_DisappearingMessageType.swift; sourceTree = "<group>"; };
7B5233C5290636D700F8F375 /* _011_DisappearingMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = _011_DisappearingMessage.swift; sourceTree = "<group>"; };
7B7037422834B81F000DCF35 /* ReactionContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReactionContainerView.swift; sourceTree = "<group>"; };
7B7037442834BCC0000DCF35 /* ReactionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReactionView.swift; sourceTree = "<group>"; };
7B7CB18D270D066F0079FF93 /* IncomingCallBanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IncomingCallBanner.swift; sourceTree = "<group>"; };
@ -3546,7 +3546,7 @@
FD09B7E4288670BB00ED0B66 /* _008_EmojiReacts.swift */,
7BAA7B6528D2DE4700AE1489 /* _009_OpenGroupPermission.swift */,
FD7115F128C6CB3900B47552 /* _010_AddThreadIdToFTS.swift */,
7B5233C5290636D700F8F375 /* _011_DisappearingMessageType.swift */,
7B5233C5290636D700F8F375 /* _011_DisappearingMessage.swift */,
);
path = Migrations;
sourceTree = "<group>";
@ -5502,7 +5502,7 @@
FDC4387827B5C35400C60D73 /* SendMessageRequest.swift in Sources */,
FDC4381527B329CE00C60D73 /* NonceGenerator.swift in Sources */,
7B93D07027CF194000811CB6 /* ConfigurationMessage+Convenience.swift in Sources */,
7B5233C6290636D700F8F375 /* _011_DisappearingMessageType.swift in Sources */,
7B5233C6290636D700F8F375 /* _011_DisappearingMessage.swift in Sources */,
FD5C72FD284F0EC90029977D /* MessageReceiver+ExpirationTimers.swift in Sources */,
C3D9E3BE25676AD70040E4F3 /* (null) in Sources */,
C32C5A88256DBCF9003C73A2 /* MessageReceiver+ClosedGroups.swift in Sources */,

@ -119,7 +119,8 @@ class ThreadDisappearingMessagesViewModel: SessionTableViewModel<ThreadDisappear
.with(
isEnabled: false,
durationSeconds: 0,
type: nil
type: nil,
lastChangeTimestampMs: Int64(floor((Date().timeIntervalSince1970 * 1000)))
)
self?.shouldShowConfirmButton.send(updatedConfig != self?.config)
self?.currentSelection.send(updatedConfig)
@ -137,7 +138,8 @@ class ThreadDisappearingMessagesViewModel: SessionTableViewModel<ThreadDisappear
.with(
isEnabled: true,
durationSeconds: (24 * 60 * 60),
type: DisappearingMessagesConfiguration.DisappearingMessageType.disappearAfterRead
type: DisappearingMessagesConfiguration.DisappearingMessageType.disappearAfterRead,
lastChangeTimestampMs: Int64(floor((Date().timeIntervalSince1970 * 1000)))
)
self?.shouldShowConfirmButton.send(updatedConfig != self?.config)
self?.currentSelection.send(updatedConfig)
@ -155,7 +157,8 @@ class ThreadDisappearingMessagesViewModel: SessionTableViewModel<ThreadDisappear
.with(
isEnabled: true,
durationSeconds: (24 * 60 * 60),
type: DisappearingMessagesConfiguration.DisappearingMessageType.disappearAfterSend
type: DisappearingMessagesConfiguration.DisappearingMessageType.disappearAfterSend,
lastChangeTimestampMs: Int64(floor((Date().timeIntervalSince1970 * 1000)))
)
self?.shouldShowConfirmButton.send(updatedConfig != self?.config)
self?.currentSelection.send(updatedConfig)
@ -181,7 +184,8 @@ class ThreadDisappearingMessagesViewModel: SessionTableViewModel<ThreadDisappear
onTap: {
let updatedConfig: DisappearingMessagesConfiguration = currentSelection
.with(
durationSeconds: duration
durationSeconds: duration,
lastChangeTimestampMs: Int64(floor((Date().timeIntervalSince1970 * 1000)))
)
self?.shouldShowConfirmButton.send(updatedConfig != self?.config)
self?.currentSelection.send(updatedConfig)
@ -206,7 +210,8 @@ class ThreadDisappearingMessagesViewModel: SessionTableViewModel<ThreadDisappear
.with(
isEnabled: false,
durationSeconds: 0,
type: nil
type: nil,
lastChangeTimestampMs: Int64(floor((Date().timeIntervalSince1970 * 1000)))
)
self?.shouldShowConfirmButton.send(updatedConfig != self?.config)
self?.currentSelection.send(updatedConfig)
@ -229,7 +234,8 @@ class ThreadDisappearingMessagesViewModel: SessionTableViewModel<ThreadDisappear
.with(
isEnabled: true,
durationSeconds: duration,
type: .disappearAfterSend
type: .disappearAfterSend,
lastChangeTimestampMs: Int64(floor((Date().timeIntervalSince1970 * 1000)))
)
self?.shouldShowConfirmButton.send(updatedConfig != self?.config)
self?.currentSelection.send(updatedConfig)

@ -25,7 +25,7 @@ public enum SNMessagingKit { // Just to make the external API nice
_008_EmojiReacts.self,
_009_OpenGroupPermission.self,
_010_AddThreadIdToFTS.self,
_011_DisappearingMessageType.self
_011_DisappearingMessage.self
]
]
)

@ -4,7 +4,7 @@ import Foundation
import GRDB
import SessionUtilitiesKit
enum _011_DisappearingMessageType: Migration {
enum _011_DisappearingMessage: Migration {
static let target: TargetMigrations.Identifier = .messagingKit
static let identifier: String = "DisappearingMessageType"
static let needsConfigSync: Bool = false
@ -13,6 +13,8 @@ enum _011_DisappearingMessageType: Migration {
static func migrate(_ db: GRDB.Database) throws {
try db.alter(table: DisappearingMessagesConfiguration.self) { t in
t.add(.type, .integer)
t.add(.lastChangeTimestampMs, .integer)
.defaults(to: 0)
}
func updateDisappearingMessageType(_ db: GRDB.Database, id: String, type: DisappearingMessagesConfiguration.DisappearingMessageType) throws {

@ -15,6 +15,7 @@ public struct DisappearingMessagesConfiguration: Codable, Identifiable, Equatabl
case isEnabled
case durationSeconds
case type
case lastChangeTimestampMs
}
public enum DisappearingMessageType: Int, Codable, Hashable, DatabaseValueConvertible {
@ -46,6 +47,7 @@ public struct DisappearingMessagesConfiguration: Codable, Identifiable, Equatabl
public let isEnabled: Bool
public let durationSeconds: TimeInterval
public var type: DisappearingMessageType?
public let lastChangeTimestampMs: Int64
// MARK: - Relationships
@ -64,20 +66,23 @@ public extension DisappearingMessagesConfiguration {
threadId: threadId,
isEnabled: false,
durationSeconds: defaultDuration,
type: nil
type: nil,
lastChangeTimestampMs: 0
)
}
func with(
isEnabled: Bool? = nil,
durationSeconds: TimeInterval? = nil,
type: DisappearingMessageType? = nil
type: DisappearingMessageType? = nil,
lastChangeTimestampMs: Int64? = nil
) -> DisappearingMessagesConfiguration {
return DisappearingMessagesConfiguration(
threadId: threadId,
isEnabled: (isEnabled ?? self.isEnabled),
durationSeconds: (durationSeconds ?? self.durationSeconds),
type: (isEnabled == false) ? nil : (type ?? self.type)
type: (isEnabled == false) ? nil : (type ?? self.type),
lastChangeTimestampMs: (lastChangeTimestampMs ?? self.lastChangeTimestampMs)
)
}
}

Loading…
Cancel
Save