Refactor data sources and feed model
This commit is contained in:
@@ -24,7 +24,7 @@ final class LocalServer: ObservableObject {
|
||||
private var listener: NWListener?
|
||||
private var browser: NWBrowser?
|
||||
private var startDate = Date()
|
||||
private var currentEnvelope: WinnerEnvelope
|
||||
private var currentEnvelope: FeedEnvelope
|
||||
private var heartbeatTimer: DispatchSourceTimer?
|
||||
private var addressTimer: DispatchSourceTimer?
|
||||
private var requestBuffers: [ObjectIdentifier: Data] = [:]
|
||||
@@ -32,20 +32,7 @@ final class LocalServer: ObservableObject {
|
||||
|
||||
init(port: Int = 8765) {
|
||||
self.port = port
|
||||
let winner = Winner(
|
||||
id: "quiet-000",
|
||||
type: .allQuiet,
|
||||
title: "All Quiet",
|
||||
subtitle: "No urgent updates",
|
||||
priority: 0.05,
|
||||
ttlSec: 300
|
||||
)
|
||||
self.currentEnvelope = WinnerEnvelope(
|
||||
schema: 1,
|
||||
generatedAt: Int(Date().timeIntervalSince1970),
|
||||
winner: winner,
|
||||
debug: nil
|
||||
)
|
||||
self.currentEnvelope = FeedEnvelope.allQuiet(now: Int(Date().timeIntervalSince1970), reason: "no_feed", source: "server")
|
||||
}
|
||||
|
||||
var testURL: String {
|
||||
@@ -97,15 +84,15 @@ final class LocalServer: ObservableObject {
|
||||
}
|
||||
}
|
||||
|
||||
func broadcastWinner(_ envelope: WinnerEnvelope) {
|
||||
let validated = (try? validateEnvelope(envelope)) ?? envelope
|
||||
currentEnvelope = validated
|
||||
func broadcastFeed(_ envelope: FeedEnvelope) {
|
||||
currentEnvelope = envelope
|
||||
let winner = envelope.winnerItem()
|
||||
DispatchQueue.main.async {
|
||||
self.lastWinnerTitle = validated.winner.title
|
||||
self.lastWinnerSubtitle = validated.winner.subtitle
|
||||
self.lastWinnerTitle = winner?.title ?? "All Quiet"
|
||||
self.lastWinnerSubtitle = winner?.subtitle ?? "No urgent updates"
|
||||
self.lastBroadcastAt = Date()
|
||||
}
|
||||
let data = sseEvent(name: "winner", payload: jsonLine(from: validated))
|
||||
let data = sseEvent(name: "feed", payload: jsonLine(from: envelope))
|
||||
broadcast(data: data)
|
||||
}
|
||||
|
||||
@@ -312,7 +299,7 @@ final class LocalServer: ObservableObject {
|
||||
}
|
||||
}
|
||||
|
||||
private func jsonLine(from envelope: WinnerEnvelope) -> String {
|
||||
private func jsonLine(from envelope: FeedEnvelope) -> String {
|
||||
let encoder = JSONEncoder()
|
||||
if let data = try? encoder.encode(envelope),
|
||||
let string = String(data: data, encoding: .utf8) {
|
||||
|
||||
Reference in New Issue
Block a user