Skip to content

Commit c8e0c86

Browse files
committed
Simplify ViewCreator functions to not require initial props.
1 parent 17e4ae6 commit c8e0c86

File tree

6 files changed

+23
-34
lines changed

6 files changed

+23
-34
lines changed

ReactFSharp.Android/ReactView.fs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ open System
88
open System.Reactive.Concurrency
99

1010
type AndroidViewCreator = (Exception -> unit) (* onError *) ->
11-
(string (* view name *) -> obj (* initialProps *) -> IReactView<View>) ->
12-
obj (* initialProps *) ->
11+
(string (* view name *) -> IReactView<View>) ->
1312
IReactView<View>
1413

1514
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
@@ -19,8 +18,8 @@ module ReactView =
1918
(context: Context)
2019
(element: ReactElement) =
2120

22-
let createNativeView onError viewCreator name (props: obj) =
21+
let createNativeView onError viewCreator name =
2322
let createAndroidView = (nativeViews |> ImmutableMap.get name) context
24-
createAndroidView onError viewCreator props
23+
createAndroidView onError viewCreator
2524

2625
ReactView.render Scheduler.mainLoopScheduler createNativeView element

ReactFSharp.Android/Views/View.fs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -737,8 +737,7 @@ module View =
737737
(viewProvider: unit -> 'view)
738738
(setProps: (Exception -> unit) -> 'view -> 'props -> IDisposable)
739739
(onError: Exception -> unit)
740-
(createNativeView: string (* view name *) -> obj (* initialProps *) -> IReactView<View>)
741-
(initialProps: obj) =
740+
(createNativeView: string (* view name *) -> IReactView<View>) =
742741

743742
let viewProvider () = viewProvider () :> View
744743
let setProps onError (view: View) props = setProps onError (view :?> 'view) props
@@ -747,4 +746,3 @@ module View =
747746
name
748747
viewProvider
749748
(setProps onError)
750-
initialProps

ReactFSharp.Android/Views/ViewGroup.fs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -338,8 +338,7 @@ module ViewGroup =
338338
(viewGroupProvider: unit -> 'viewGroup)
339339
(setProps: (Exception -> unit) -> 'viewGroup -> 'props -> IDisposable)
340340
(onError: Exception -> unit)
341-
(createNativeView: string (* view name *) -> obj (* initialProps *) -> IReactView<View>)
342-
(initialProps: obj) =
341+
(createNativeView: string (* view name *) -> IReactView<View>) =
343342

344343
let viewGroupProvider () = viewGroupProvider () :> View
345344
let setProps onError (view: View) props =
@@ -354,7 +353,6 @@ module ViewGroup =
354353
name
355354
viewGroupProvider
356355
(setProps onError)
357-
initialProps
358356

359357
let setProps (onError: Exception -> unit) (view: ViewGroup) (props: IViewGroupProps) =
360358
view.SetAddStatesFromChildren props.AddStatesFromChildren

ReactFSharp.Android/Widget/ListView.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ type ListViewProps with
320320
module ListView =
321321
[<Sealed>]
322322
type ReactListAdapter (children: IObservable<IImmutableMap<int, ReactDOMNode>>,
323-
createNativeView: string (* view name *) -> obj (* initialProps *) -> IReactView<View>,
323+
createNativeView: string (* view name *) -> IReactView<View>,
324324
onError: Exception -> unit) as this =
325325
inherit BaseAdapter()
326326

@@ -394,7 +394,7 @@ module ListView =
394394
let private createView (context: Context): AndroidViewCreator =
395395
let createView
396396
(onError: Exception -> unit)
397-
(createView: string (* view name *) -> obj (* initialProps *) -> IReactView<View>) =
397+
(createView: string (* view name *) -> IReactView<View>) =
398398

399399
let view = new ListView (context)
400400
let setChildrenSubject = new Subject<IImmutableMap<int, ReactDOMNode>>()

ReactFSharp.iOS/ReactView.fs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ open System.Reactive.Concurrency
77
open UIKit
88

99
type IOSViewCreator = (Exception -> unit) (* onError *) ->
10-
(string (* view name *) -> obj (* initialProps *) -> IReactView<UIView>) ->
11-
obj (* initialProps *) ->
10+
(string (* view name *) -> IReactView<UIView>) ->
1211
IReactView<UIView>
1312

1413
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
@@ -17,9 +16,9 @@ module ReactView =
1716
(nativeViews: IImmutableMap<string, IOSViewCreator>)
1817
(element: ReactElement) =
1918

20-
let createNativeView onError viewCreator name (props: obj) =
19+
let createNativeView onError viewCreator name =
2120
let createIOSView = (nativeViews |> ImmutableMap.get name)
22-
createIOSView onError viewCreator props
21+
createIOSView onError viewCreator
2322

2423
ReactView.render Scheduler.mainLoopScheduler createNativeView element
2524

ReactFSharp/ReactView.fs

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ module ReactView =
2121
let private dispose (disposable: IDisposable) = disposable.Dispose()
2222

2323
let updateNativeView
24-
(createNativeView: string (* view name *) -> obj (* initialProps *) -> IReactView<'view>)
24+
(createNativeView: string (* view name *) -> IReactView<'view>)
2525
(view: Option<IReactView<'view>>)
2626
(dom: Option<ReactNativeDOMNode>): Option<IReactView<'view>> =
2727
match (view, dom) with
@@ -34,7 +34,8 @@ module ReactView =
3434
| (_, Some dom) ->
3535
view |> Option.iter dispose
3636

37-
let newReactView = createNativeView dom.Element.Name dom.Element.Props
37+
let newReactView = createNativeView dom.Element.Name
38+
newReactView.Props <- dom.Element.Props
3839
newReactView.Children <- dom.Children
3940
Some newReactView
4041
| _ ->
@@ -45,20 +46,19 @@ module ReactView =
4546
(scheduler: IScheduler)
4647
(createNativeView:
4748
(Exception -> unit) (* onError *) ->
48-
(string (* view name *) -> obj (* initialProps *) -> IReactView<'view>) ->
49+
(string (* view name *) -> IReactView<'view>) ->
4950
string (* view name *) ->
50-
obj (* initialProps *) ->
5151
IReactView<'view>
5252
)
5353
(element: ReactElement): IObservable<Option<'view>>=
5454

5555
let curryCreateNativeView onError =
5656
let createNativeViewRef =
57-
let dummy (viewName: string) (initialProps: obj): IReactView<'view> = failwith "oops"
57+
let dummy (viewName: string): IReactView<'view> = failwith "oops"
5858
ref dummy
5959

60-
let createNativeView (viewName: string) (initialProps: obj) =
61-
createNativeView onError (!createNativeViewRef) viewName initialProps
60+
let createNativeView (viewName: string) =
61+
createNativeView onError (!createNativeViewRef) viewName
6262

6363
createNativeViewRef := createNativeView
6464
createNativeView
@@ -81,8 +81,7 @@ module ReactView =
8181
(view: 'view)
8282
(setProps: 'props -> IDisposable)
8383
(setChildren: IImmutableMap<int, ReactDOMNode> -> unit)
84-
(onDispose: unit -> unit)
85-
(initialProps: obj) : IReactView<'view> =
84+
(onDispose: unit -> unit) : IReactView<'view> =
8685

8786
let errors = new BehaviorSubject<Option<Exception>>(None)
8887
let throwIfErrors () =
@@ -101,8 +100,6 @@ module ReactView =
101100
|> Observable.last
102101
|> Observable.subscribeWithError dispose (Some >> errors.OnNext)
103102

104-
propsSubject.OnNext (initialProps :?> 'props)
105-
106103
{
107104
new IReactView<'view> with
108105
member this.Dispose () =
@@ -124,21 +121,19 @@ module ReactView =
124121
let createViewWithoutChildren<'view, 'props when 'view :> IDisposable>
125122
(name: string)
126123
(viewProvider: unit -> 'view)
127-
(setProps: 'view -> 'props -> IDisposable)
128-
(initialProps: obj) =
124+
(setProps: 'view -> 'props -> IDisposable) =
129125
let view = viewProvider ()
130-
createView name view (setProps view) ignore ignore initialProps
126+
createView name view (setProps view) ignore ignore
131127

132128
let createViewImmediatelyRenderingAllChildren<'view, 'props when 'view :> IDisposable>
133129
(scheduler: IScheduler)
134130
(onError: Exception -> unit)
135-
(createNativeView: string (* view name *) -> obj (* initialProps *) -> IReactView<'view>)
131+
(createNativeView: string (* view name *) -> IReactView<'view>)
136132
(removeAllViews: 'view -> unit)
137133
(addViews: 'view (* parent *) -> seq<'view> (* children *)-> unit)
138134
(name: string)
139135
(viewProvider: unit -> 'view)
140-
(setProps: 'view -> 'props -> IDisposable)
141-
(initialProps: obj) =
136+
(setProps: 'view -> 'props -> IDisposable) =
142137

143138
let view = viewProvider ()
144139
let updateNativeView = updateNativeView createNativeView
@@ -206,4 +201,4 @@ module ReactView =
206201
|> ImmutableMap.values
207202
|> Seq.iter dispose
208203

209-
createView name view (setProps view) setChildrenSubject.OnNext onDispose initialProps
204+
createView name view (setProps view) setChildrenSubject.OnNext onDispose

0 commit comments

Comments
 (0)