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

33 lines
966 B
Swift

//
// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
/// Uniquely and stably identifies an ``AttachmentReference``
public struct AttachmentReferenceId: Equatable, Hashable {
public let ownerId: AttachmentReference.OwnerId
/// Body media attachments on the same message share an owner id.
///
/// For those body media attachments, order disambiguates,
/// which makes this identifier object as a whole unique.
///
/// In other owner cases this order value is nil.
public let orderInOwner: UInt32?
}
extension AttachmentReference {
public var referenceId: AttachmentReferenceId {
let orderInOwner: UInt32?
switch owner {
case .message(.bodyAttachment(let metadata)):
orderInOwner = metadata.orderInOwner
default:
orderInOwner = nil
}
return .init(ownerId: owner.id, orderInOwner: orderInOwner)
}
}