fluxa/appleApp/AppleCore/FluxaAppleCatalogBootstrap.swift
KhooLy afea67d02f
Some checks failed
Apple / iOS simulator (push) Has been cancelled
Apple / tvOS simulator (push) Has been cancelled
Platform Verification / Android shared modules (push) Has been cancelled
fix: resolve FluxaCore/FluxaShared type identity mismatch after moving Apple snapshot DTOs
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.
2026-07-28 19:42:59 +03:00

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)
}
}