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

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

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

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

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