mirror of
https://github.com/divkit/divkit.git
synced 2026-06-06 20:07:59 +00:00
c4c415d870
Fix duplication of update for Playground app
52 lines
1.1 KiB
Swift
52 lines
1.1 KiB
Swift
import SwiftUI
|
|
|
|
import DivKit
|
|
|
|
final class DivViewProvider {
|
|
public let jsonProvider = ObservableJsonProvider()
|
|
|
|
private var blockProvider: DivBlockProvider!
|
|
private var divKitComponents: DivKitComponents!
|
|
|
|
init() {
|
|
let urlOpener = DemoUrlOpener(
|
|
loadJsonUrl: { [weak self] url in
|
|
self?.jsonProvider.load(url: url)
|
|
}
|
|
)
|
|
divKitComponents = AppComponents.makeDivKitComponents(
|
|
updateCardAction: { [weak self] reasons in
|
|
self?.blockProvider.update(reasons: reasons.asArray())
|
|
},
|
|
urlOpener: urlOpener.openUrl(_:)
|
|
)
|
|
|
|
blockProvider = DivBlockProvider(
|
|
json: jsonProvider.signal,
|
|
divKitComponents: divKitComponents,
|
|
shouldResetOnDataChange: true
|
|
)
|
|
}
|
|
|
|
func makeDivView(_ url: URL) -> some View {
|
|
DivView(
|
|
blockProvider: blockProvider,
|
|
divKitComponents: divKitComponents
|
|
)
|
|
.onAppear { [weak self] in
|
|
self?.jsonProvider.load(url: url)
|
|
}
|
|
}
|
|
}
|
|
|
|
extension DivActionURLHandler.UpdateReason {
|
|
var patch: DivPatch? {
|
|
switch self {
|
|
case let .patch(_, patch):
|
|
return patch
|
|
case .timer, .variable, .state:
|
|
return nil
|
|
}
|
|
}
|
|
}
|