mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
Fixed some broken file paths Fixed a couple of bugs with closed groups Fixed a few migration issues Fixed a bug with the ProfilePictureView in open groups (was including the open parenthesis in the initials) Migrated the Id Blinding changes to work with GRDB Migrated the call logic to work with GRDB Updated the code to work the with hard fork changes
53 lines
2.3 KiB
Swift
53 lines
2.3 KiB
Swift
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
import Foundation
|
|
import GRDB
|
|
import SessionUtilitiesKit
|
|
|
|
extension MessageReceiver {
|
|
internal static func handleExpirationTimerUpdate(_ db: Database, message: ExpirationTimerUpdate) throws {
|
|
// Get the target thread
|
|
guard
|
|
let targetId: String = MessageReceiver.threadInfo(db, message: message, openGroupId: nil)?.id,
|
|
let sender: String = message.sender,
|
|
let thread: SessionThread = try? SessionThread.fetchOne(db, id: targetId)
|
|
else { return }
|
|
|
|
// Update the configuration
|
|
//
|
|
// Note: Messages which had been sent during the previous configuration will still
|
|
// use it's settings (so if you enable, send a message and then disable disappearing
|
|
// message then the message you had sent will still disappear)
|
|
let config: DisappearingMessagesConfiguration = try thread.disappearingMessagesConfiguration
|
|
.fetchOne(db)
|
|
.defaulting(to: DisappearingMessagesConfiguration.defaultWith(thread.id))
|
|
.with(
|
|
// If there is no duration then we should disable the expiration timer
|
|
isEnabled: ((message.duration ?? 0) > 0),
|
|
durationSeconds: (
|
|
message.duration.map { TimeInterval($0) } ??
|
|
DisappearingMessagesConfiguration.defaultDuration
|
|
)
|
|
)
|
|
|
|
// Add an info message for the user
|
|
_ = try Interaction(
|
|
serverHash: nil, // Intentionally null so sync messages are seen as duplicates
|
|
threadId: thread.id,
|
|
authorId: sender,
|
|
variant: .infoDisappearingMessagesUpdate,
|
|
body: config.messageInfoString(
|
|
with: (sender != getUserHexEncodedPublicKey(db) ?
|
|
Profile.displayName(db, id: sender) :
|
|
nil
|
|
)
|
|
),
|
|
timestampMs: Int64(message.sentTimestamp ?? 0) // Default to `0` if not set
|
|
).inserted(db)
|
|
|
|
// Finally save the changes to the DisappearingMessagesConfiguration (If it's a duplicate
|
|
// then the interaction unique constraint will prevent the code from getting here)
|
|
try config.save(db)
|
|
}
|
|
}
|