@@ -27,16 +27,16 @@ private let logger = Logger(subsystem: "LiveViewNative", category: "LiveViewCoor
27
27
@MainActor
28
28
public class LiveViewCoordinator < R: RootRegistry > : ObservableObject {
29
29
@Published internal private( set) var internalState : LiveSessionState = . notConnected
30
-
30
+
31
31
var state : LiveSessionState {
32
32
internalState
33
33
}
34
-
34
+
35
35
let session : LiveSessionCoordinator < R >
36
36
var url : URL
37
-
38
- private var channel : Channel ?
39
-
37
+
38
+ private var channel : SwiftPhoenixClient . Channel ?
39
+
40
40
@Published var document : LiveViewNativeCore . Document ?
41
41
private var elementChangedSubjects = [ NodeRef: ObjectWillChangePublisher] ( )
42
42
func elementChanged( _ ref: NodeRef ) -> ObjectWillChangePublisher {
@@ -194,9 +194,11 @@ public class LiveViewCoordinator<R: RootRegistry>: ObservableObject {
194
194
195
195
private func handleDiff( payload: Payload , baseURL: URL ) throws {
196
196
handleEvents ( payload: payload)
197
- let diff = try RootDiff ( from: FragmentDecoder ( data: payload) )
198
- self . rendered = try self . rendered. merge ( with: diff)
199
- self . document? . merge ( with: try Document . parse ( self . rendered. buildString ( ) ) )
197
+ try self . document? . mergeFragmentJson ( payload)
198
+
199
+ //let diff = try RootDiff(from: FragmentDecoder(data: payload))
200
+ //self.rendered = try self.rendered.merge(with: diff)
201
+ //self.document?.merge(with: try Document.parse(self.rendered.buildString()))
200
202
}
201
203
202
204
private func handleEvents( payload: Payload ) {
@@ -320,13 +322,13 @@ public class LiveViewCoordinator<R: RootRegistry>: ObservableObject {
320
322
self ? . internalState = . notConnected
321
323
}
322
324
}
323
-
325
+
324
326
enum JoinResult {
325
327
case rendered( Payload )
326
328
case redirect( LiveRedirect )
327
329
}
328
330
329
- private func join( channel: Channel ) -> AsyncThrowingStream < JoinResult , Error > {
331
+ private func join( channel: SwiftPhoenixClient . Channel ) -> AsyncThrowingStream < JoinResult , Error > {
330
332
return AsyncThrowingStream < JoinResult , Error > { [ weak channel] ( continuation: AsyncThrowingStream < JoinResult , Error > . Continuation ) -> Void in
331
333
channel? . join ( )
332
334
. receive ( " ok " ) { [ weak self, weak channel] message in
@@ -382,10 +384,11 @@ public class LiveViewCoordinator<R: RootRegistry>: ObservableObject {
382
384
383
385
private func handleJoinPayload( renderedPayload: Payload ) {
384
386
// todo: what should happen if decoding or parsing fails?
385
- self . rendered = try ! Root ( from: FragmentDecoder ( data: renderedPayload) )
386
- self . document = try ! LiveViewNativeCore . Document. parse ( rendered. buildString ( ) )
387
+ //self.rendered = try! Root(from: FragmentDecoder(data: renderedPayload))
388
+ //self.document = try! LiveViewNativeCore.Document.parse(rendered.buildString())
389
+ self . document = try ! LiveViewNativeCore . Document. parseFragmentJson ( payload: renderedPayload)
387
390
self . document? . on ( . changed) { [ unowned self] doc, nodeRef in
388
- switch doc [ nodeRef] . data {
391
+ switch doc [ nodeRef] . data ( ) {
389
392
case . root:
390
393
// when the root changes, update the `NavStackEntry` itself.
391
394
self . objectWillChange. send ( )
@@ -396,7 +399,7 @@ public class LiveViewCoordinator<R: RootRegistry>: ObservableObject {
396
399
} else {
397
400
self . elementChanged ( nodeRef) . send ( )
398
401
}
399
- case . element :
402
+ case . nodeElement :
400
403
// when a single element changes, send an update only to that element.
401
404
self . elementChanged ( nodeRef) . send ( )
402
405
}
0 commit comments