minor refactor

pull/731/head
Ryan ZHAO 6 months ago
parent 4c0c1cda1a
commit 1c6232e4d7

@ -243,6 +243,14 @@ public extension DisappearingMessagesConfiguration {
return String(data: messageInfoData, encoding: .utf8) return String(data: messageInfoData, encoding: .utf8)
} }
func isValidV2Config() -> Bool {
if let type = self.type {
return !(self.durationSeconds > 0 && self.type == .unknown)
} else {
return self.durationSeconds == 0
}
}
} }
// MARK: - Control Message // MARK: - Control Message

@ -48,7 +48,7 @@ extension MessageReceiver {
.fetchOne(db) .fetchOne(db)
.defaulting(to: DisappearingMessagesConfiguration.defaultWith(threadId)) .defaulting(to: DisappearingMessagesConfiguration.defaultWith(threadId))
let remoteConfig: DisappearingMessagesConfiguration = localConfig.with( let updatedConfig: DisappearingMessagesConfiguration = localConfig.with(
// If there is no duration then we should disable the expiration timer // If there is no duration then we should disable the expiration timer
isEnabled: ((message.duration ?? 0) > 0), isEnabled: ((message.duration ?? 0) > 0),
durationSeconds: ( durationSeconds: (
@ -87,7 +87,7 @@ extension MessageReceiver {
.update( .update(
db, db,
sessionId: threadId, sessionId: threadId,
disappearingMessagesConfig: remoteConfig disappearingMessagesConfig: updatedConfig
) )
case .legacyGroup: case .legacyGroup:
@ -95,7 +95,7 @@ extension MessageReceiver {
.update( .update(
db, db,
groupPublicKey: threadId, groupPublicKey: threadId,
disappearingConfig: remoteConfig disappearingConfig: updatedConfig
) )
default: break default: break
@ -106,7 +106,7 @@ extension MessageReceiver {
if canPerformChange { if canPerformChange {
// Finally save the changes to the DisappearingMessagesConfiguration (If it's a duplicate // Finally save the changes to the DisappearingMessagesConfiguration (If it's a duplicate
// then the interaction unique constraint will prevent the code from getting here) // then the interaction unique constraint will prevent the code from getting here)
try remoteConfig.save(db) try updatedConfig.save(db)
} }
// Add an info message for the user // Add an info message for the user
@ -116,7 +116,7 @@ extension MessageReceiver {
threadId: threadId, threadId: threadId,
authorId: sender, authorId: sender,
variant: .infoDisappearingMessagesUpdate, variant: .infoDisappearingMessagesUpdate,
body: remoteConfig.messageInfoString( body: updatedConfig.messageInfoString(
threadVariant: threadVariant, threadVariant: threadVariant,
senderName: (sender != currentUserPublicKey ? Profile.displayName(db, id: sender) : nil), senderName: (sender != currentUserPublicKey ? Profile.displayName(db, id: sender) : nil),
isPreviousOff: false isPreviousOff: false

@ -179,7 +179,9 @@ internal extension SessionUtil {
.fetchOne(db, id: sessionId) .fetchOne(db, id: sessionId)
.defaulting(to: DisappearingMessagesConfiguration.defaultWith(sessionId)) .defaulting(to: DisappearingMessagesConfiguration.defaultWith(sessionId))
if data.config != localConfig { let isValid: Bool = Features.useNewDisappearingMessagesConfig ? data.config.isValidV2Config() : true
if isValid && data.config != localConfig {
_ = try data.config.save(db) _ = try data.config.save(db)
_ = try Interaction _ = try Interaction
.filter(Interaction.Columns.threadId == sessionId) .filter(Interaction.Columns.threadId == sessionId)

@ -277,8 +277,8 @@ internal extension SessionUtil {
.fetchOne(db, id: group.id) .fetchOne(db, id: group.id)
.defaulting(to: DisappearingMessagesConfiguration.defaultWith(group.id)) .defaulting(to: DisappearingMessagesConfiguration.defaultWith(group.id))
if let remoteConfig = group.disappearingConfig, localConfig != remoteConfig { if let updatedConfig = group.disappearingConfig, localConfig != updatedConfig {
_ = try remoteConfig.save(db) _ = try updatedConfig.save(db)
_ = try Interaction _ = try Interaction
.filter(Interaction.Columns.threadId == group.id) .filter(Interaction.Columns.threadId == group.id)

Loading…
Cancel
Save