mirror of
https://github.com/FluxaMedia/fluxa.git
synced 2026-08-09 00:17:35 +00:00
Kotlin/Native generates distinct Swift types for a class depending on whether it's imported directly from its owning module or transitively re-exported through another framework, so files consuming these DTOs via FluxaShared's re-export of core no longer matched the FluxaCore type Loader/ResourceLoader now return directly. Route Bootstrap and HomeEffectHandler through FluxaCore consistently, and add an explicit FluxaCore->FluxaShared stream conversion where DetailStartup crosses back into FluxaApple.shared's Shared-typed API.
36 lines
1.2 KiB
Swift
36 lines
1.2 KiB
Swift
import FluxaCore
|
|
import Foundation
|
|
|
|
@MainActor
|
|
final class FluxaAppleCatalogBootstrap {
|
|
private let loader: FluxaAppleCatalogLoader
|
|
private let resolver: FluxaAppleAddonCatalogResolver
|
|
|
|
init(
|
|
loader: FluxaAppleCatalogLoader = FluxaAppleCatalogLoader(),
|
|
resolver: FluxaAppleAddonCatalogResolver = FluxaAppleAddonCatalogResolver()
|
|
) {
|
|
self.loader = loader
|
|
self.resolver = resolver
|
|
}
|
|
|
|
func loadRows(requests: [FluxaAppleCatalogRequest]) async throws -> [AppleCatalogRowSnapshot] {
|
|
try await loader.loadRows(requests: requests)
|
|
}
|
|
|
|
func loadRows(localAddonUrls: [String]) async throws -> [AppleCatalogRowSnapshot] {
|
|
let requests = try await resolver.resolveRequests(localAddonUrls: localAddonUrls)
|
|
return try await loadRows(requests: requests)
|
|
}
|
|
|
|
func loadSearchItems(
|
|
localAddonUrls: [String],
|
|
query: String
|
|
) async throws -> [AppleCatalogItemSnapshot] {
|
|
let requests = try await resolver.resolveSearchRequests(
|
|
localAddonUrls: localAddonUrls,
|
|
query: query
|
|
)
|
|
return try await loader.loadSearchItems(requests: requests)
|
|
}
|
|
}
|