IceCubesApp/Packages/Models/Sources/Models/Stream/StreamEvent.swift
Thomas Ricouard 1f858414d8 format .
2024-02-14 12:48:14 +01:00

58 lines
1.4 KiB
Swift

import Foundation
public struct RawStreamEvent: Decodable {
public let event: String
public let stream: [String]
public let payload: String
}
public protocol StreamEvent: Identifiable {
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
}
}
public struct StreamEventStatusUpdate: StreamEvent {
public let date = Date()
public var id: String { status.id + (status.editedAt?.asDate.description ?? "") }
public let status: Status
public init(status: Status) {
self.status = status
}
}
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
}
}
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
}
}