2022-12-25 11:46:42 +00:00
|
|
|
import Foundation
|
|
|
|
|
|
|
|
public struct RawStreamEvent: Decodable {
|
|
|
|
public let event: String
|
|
|
|
public let stream: [String]
|
|
|
|
public let payload: String
|
|
|
|
}
|
|
|
|
|
2023-01-17 10:36:01 +00:00
|
|
|
public protocol StreamEvent: Identifiable {
|
2022-12-25 11:46:42 +00:00
|
|
|
var date: Date { get }
|
|
|
|
var id: String { get }
|
|
|
|
}
|
|
|
|
|
|
|
|
public struct StreamEventUpdate: StreamEvent {
|
|
|
|
public let date = Date()
|
|
|
|
public var id: String { status.id }
|
|
|
|
public let status: Status
|
|
|
|
public init(status: Status) {
|
|
|
|
self.status = status
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-26 06:36:54 +00:00
|
|
|
public struct StreamEventStatusUpdate: StreamEvent {
|
|
|
|
public let date = Date()
|
|
|
|
public var id: String { status.id }
|
|
|
|
public let status: Status
|
|
|
|
public init(status: Status) {
|
|
|
|
self.status = status
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-25 11:46:42 +00:00
|
|
|
public struct StreamEventDelete: StreamEvent {
|
|
|
|
public let date = Date()
|
|
|
|
public var id: String { status + date.description }
|
|
|
|
public let status: String
|
|
|
|
public init(status: String) {
|
|
|
|
self.status = status
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public struct StreamEventNotification: StreamEvent {
|
|
|
|
public let date = Date()
|
|
|
|
public var id: String { notification.id }
|
|
|
|
public let notification: Notification
|
|
|
|
public init(notification: Notification) {
|
|
|
|
self.notification = notification
|
|
|
|
}
|
|
|
|
}
|
2023-01-05 11:21:54 +00:00
|
|
|
|
|
|
|
public struct StreamEventConversation: StreamEvent {
|
|
|
|
public let date = Date()
|
|
|
|
public var id: String { conversation.id }
|
|
|
|
public let conversation: Conversation
|
|
|
|
public init(conversation: Conversation) {
|
|
|
|
self.conversation = conversation
|
|
|
|
}
|
|
|
|
}
|