Skip to content

Commit

Permalink
Merge pull request #1064 from fabulous-dev/implement-sync-action
Browse files Browse the repository at this point in the history
Add SyncAction
  • Loading branch information
Edgar Gonzalez committed Jan 30, 2024
2 parents 679c22a + 785ec97 commit 6138447
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 2 deletions.
3 changes: 2 additions & 1 deletion src/Fabulous.Tests/APISketchTests/TestUI.Widgets.fs
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,8 @@ module TestUI_Widgets =
{ Log = fun _ -> ()
MinLogLevel = LogLevel.Fatal }
Dispatch = fun msg -> unbox<'msg> msg |> x.ProcessMessage
GetComponent = Component.getComponent }
GetComponent = Component.getComponent
SyncAction = fun fn -> fn() }

member x.ProcessMessage(msg: 'msg) =
match state with
Expand Down
5 changes: 4 additions & 1 deletion src/Fabulous/Component.fs
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@ type Component(treeContext: ViewTreeContext, body: ComponentBody, context: Compo

node

member this.Render() =
member private this.RenderInternal() =
let prevRootWidget = _widget
let prevContext = _context
let struct (context, currRootWidget) = _body.Invoke(_context)
Expand All @@ -322,6 +322,9 @@ type Component(treeContext: ViewTreeContext, body: ComponentBody, context: Compo

Reconciler.update treeContext.CanReuseView (ValueSome prevRootWidget) currRootWidget viewNode

member this.Render() =
treeContext.SyncAction(this.RenderInternal)

module Component =
let WidgetKey =
let key = WidgetDefinitionStore.getNextKey()
Expand Down
1 change: 1 addition & 0 deletions src/Fabulous/IViewNode.fs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ type ViewTreeContext =
GetViewNode: obj -> IViewNode
Logger: Logger
Dispatch: obj -> unit
SyncAction: (unit -> unit) -> unit
GetComponent: obj -> obj }

and IViewNode =
Expand Down

0 comments on commit 6138447

Please sign in to comment.