TM-SGNL-iOS/SignalServiceKit/Storage/MediaGallery/DatedAttachmentReferenceId.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

46 lines
1.6 KiB
Swift

//
// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
public struct DatedAttachmentReferenceId {
public let id: AttachmentReferenceId
// timestamp of the owning message.
public let receivedAtTimestamp: UInt64
public var date: Date {
return Date(millisecondsSince1970: receivedAtTimestamp)
}
public init(id: AttachmentReferenceId, receivedAtTimestamp: UInt64) {
self.id = id
self.receivedAtTimestamp = receivedAtTimestamp
}
}
extension AttachmentReference {
var datedId: DatedAttachmentReferenceId {
let receivedAtTimestamp: UInt64
switch owner {
case .message(.bodyAttachment(let metadata)):
receivedAtTimestamp = metadata.receivedAtTimestamp
case .message(.oversizeText(let metadata)):
receivedAtTimestamp = metadata.receivedAtTimestamp
case .message(.linkPreview(let metadata)):
receivedAtTimestamp = metadata.receivedAtTimestamp
case .message(.quotedReply(let metadata)):
receivedAtTimestamp = metadata.receivedAtTimestamp
case .message(.sticker(let metadata)):
receivedAtTimestamp = metadata.receivedAtTimestamp
case .message(.contactAvatar(let metadata)):
receivedAtTimestamp = metadata.receivedAtTimestamp
case .storyMessage, .thread:
owsFailDebug("Should not be indexing non-message attachments in gallery")
receivedAtTimestamp = Date().ows_millisecondsSince1970
}
return .init(id: self.referenceId, receivedAtTimestamp: receivedAtTimestamp)
}
}