This repository has been archived on 2026-02-12. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
swift-duct-calc/Sources/ViewController/Interface.swift

56 lines
1.1 KiB
Swift

import Dependencies
import DependenciesMacros
import Elementary
import Logging
import ManualDCore
extension DependencyValues {
public var viewController: ViewController {
get { self[ViewController.self] }
set { self[ViewController.self] = newValue }
}
}
public typealias AnySendableHTML = (any HTML & Sendable)
@DependencyClient
public struct ViewController: Sendable {
public var view: @Sendable (Request) async throws -> AnySendableHTML
}
extension ViewController {
public struct Request: Sendable {
public let route: SiteRoute.View
public let isHtmxRequest: Bool
public let logger: Logger
public init(
route: SiteRoute.View,
isHtmxRequest: Bool,
logger: Logger
) {
self.route = route
self.isHtmxRequest = isHtmxRequest
self.logger = logger
}
}
}
extension ViewController: DependencyKey {
public static let testValue = Self()
// FIX: Fix.
public static let liveValue = Self(
view: { _ in
return MainPage {
div {
h1 { "It works!" }
h2 { "Browser sync works!" }
}
}
}
)
}