36 lines
892 B
Swift
36 lines
892 B
Swift
import Foundation
|
|
|
|
// MARK: - Card Interaction
|
|
|
|
/// Tracks user interactions with rich content cards (accept, decline, counter, etc.).
|
|
public struct CardInteraction: Codable, Identifiable, Hashable, Sendable {
|
|
public let id: String
|
|
public let messageId: String
|
|
public let userId: String
|
|
public let action: CardInteractionAction
|
|
public let createdAt: Date
|
|
|
|
public init(
|
|
id: String,
|
|
messageId: String,
|
|
userId: String,
|
|
action: CardInteractionAction,
|
|
createdAt: Date
|
|
) {
|
|
self.id = id
|
|
self.messageId = messageId
|
|
self.userId = userId
|
|
self.action = action
|
|
self.createdAt = createdAt
|
|
}
|
|
}
|
|
|
|
// MARK: - Card Interaction Action
|
|
|
|
public enum CardInteractionAction: String, Codable, Hashable, Sendable {
|
|
case accepted
|
|
case declined
|
|
case countered
|
|
case viewed
|
|
case expired
|
|
}
|