Skip to content

Commit 18a912d

Browse files
committed
checkpoint
1 parent efef4d6 commit 18a912d

File tree

11 files changed

+51
-63
lines changed

11 files changed

+51
-63
lines changed

ReactFSharp.Android/Views/ViewGroup.fs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,14 +170,11 @@ module ViewGroup =
170170
viewGroup.RemoveViewAt index
171171

172172
let create<'viewGroup, 'props when 'viewGroup :> ViewGroup>
173+
(onError: Exception -> unit)
173174
(name: string)
174175
(viewGroupProvider: unit -> 'viewGroup)
175176
(emptyViewProvider: unit -> View)
176177
(setProps: 'viewGroup -> 'props -> unit) =
177-
let onError exn =
178-
Console.WriteLine (exn.ToString ())
179-
raise exn
180-
181178
let createViewGroup initialProps =
182179
ReactView.createViewGroup
183180
onError

ReactFSharp.Android/Widget/FrameLayout.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,12 +165,12 @@ module FrameLayout =
165165
let setProps (view: FrameLayout) (props: IFrameLayoutProps) =
166166
ViewGroup.setProps view props
167167

168-
let private createView context =
168+
let private createView onError context =
169169
let emptyViewProvider () = (new Space(context)) :> View
170170
let viewGroupProvider () = new FrameLayout(context)
171-
ViewGroup.create name viewGroupProvider emptyViewProvider setProps
171+
ViewGroup.create onError name viewGroupProvider emptyViewProvider setProps
172172

173-
let viewProvider = (name, createView)
173+
let viewProvider onError = (name, createView onError)
174174

175175
let internal reactComponent = ReactComponent.makeLazy (fun (props: FrameLayoutComponentProps) -> ReactNativeElementGroup {
176176
Name = name

ReactFSharp.Android/Widget/GridView.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,12 +165,12 @@ module GridView =
165165
let setProps (view: GridView) (props: IGridViewProps) =
166166
ViewGroup.setProps view props
167167

168-
let private createView context =
168+
let private createView onError context =
169169
let emptyViewProvider () = (new Space(context)) :> View
170170
let viewGroupProvider () = new GridView(context)
171-
ViewGroup.create name viewGroupProvider emptyViewProvider setProps
171+
ViewGroup.create onError name viewGroupProvider emptyViewProvider setProps
172172

173-
let viewProvider = (name, createView)
173+
let viewProvider onError = (name, createView onError)
174174

175175
let internal reactComponent = ReactComponent.makeLazy (fun (props: GridViewComponentProps) -> ReactNativeElementGroup {
176176
Name = name

ReactFSharp.Android/Widget/LinearLayout.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,12 +212,12 @@ module LinearLayout =
212212
view.ShowDividers <- props.ShowDividers
213213
view.WeightSum <- props.WeightSum
214214

215-
let private createView context =
215+
let private createView onError context =
216216
let emptyViewProvider () = (new Space(context)) :> View
217217
let viewGroupProvider () = new LinearLayoutCompat(context)
218-
ViewGroup.create name viewGroupProvider emptyViewProvider setProps
218+
ViewGroup.create onError name viewGroupProvider emptyViewProvider setProps
219219

220-
let viewProvider = (name, createView)
220+
let viewProvider onError = (name, createView onError)
221221

222222
let internal reactComponent = ReactComponent.makeLazy (fun (props: LinearLayoutComponentProps) -> ReactNativeElementGroup {
223223
Name = name

ReactFSharp.Android/Widget/ListView.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,12 +165,12 @@ module ListView =
165165
let setProps (view: ListView) (props: IListViewProps) =
166166
ViewGroup.setProps view props
167167

168-
let private createView context =
168+
let private createView onError context =
169169
let emptyViewProvider () = (new Space(context)) :> View
170170
let viewGroupProvider () = new ListView(context)
171-
ViewGroup.create name viewGroupProvider emptyViewProvider setProps
171+
ViewGroup.create onError name viewGroupProvider emptyViewProvider setProps
172172

173-
let viewProvider = (name, createView)
173+
let viewProvider onError = (name, createView)
174174

175175
let internal reactComponent = ReactComponent.makeLazy (fun (props: ListViewComponentProps) -> ReactNativeElementGroup {
176176
Name = name

ReactFSharp.Android/Widget/RelativeLayout.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,12 +189,12 @@ module RelativeLayout =
189189
let setProps (view: RelativeLayout) (props: IViewGroupProps) =
190190
ViewGroup.setProps view props
191191

192-
let private createView context =
192+
let private createView onError context =
193193
let emptyViewProvider () = (new Space(context)) :> View
194194
let viewGroupProvider () = new RelativeLayout(context)
195-
ViewGroup.create name viewGroupProvider emptyViewProvider setProps
195+
ViewGroup.create onError name viewGroupProvider emptyViewProvider setProps
196196

197-
let viewProvider = (name, createView)
197+
let viewProvider onError = (name, createView onError)
198198

199199
let internal reactComponent = ReactComponent.makeLazy (fun (props: RelativeLayoutComponentProps) -> ReactNativeElementGroup {
200200
Name = name

ReactFSharp.Android/Widget/SwipeRefreshLayout.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -166,12 +166,12 @@ module SwipeRefreshLayout =
166166
let setProps (view: SwipeRefreshLayout) (props: ISwipeRefreshLayoutProps) =
167167
ViewGroup.setProps view props
168168

169-
let private createView context =
169+
let private createView onError context =
170170
let emptyViewProvider () = (new Space(context)) :> View
171171
let viewGroupProvider () = new SwipeRefreshLayout(context)
172-
ViewGroup.create name viewGroupProvider emptyViewProvider setProps
172+
ViewGroup.create onError name viewGroupProvider emptyViewProvider setProps
173173

174-
let viewProvider = (name, createView)
174+
let viewProvider onError = (name, createView onError)
175175

176176
let internal reactComponent = ReactComponent.makeLazy (fun (props: SwipeRefreshLayoutComponentProps) -> ReactNativeElementGroup {
177177
Name = name

ReactFSharp.Android/Widget/Toolbar.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,12 +184,12 @@ module Toolbar =
184184
view.Subtitle <- props.SubTitle
185185
view.Title <- props.Title
186186

187-
let private createView context =
187+
let private createView onError context =
188188
let emptyViewProvider () = (new Space(context)) :> View
189189
let viewGroupProvider () = new Android.Support.V7.Widget.Toolbar(context)
190-
ViewGroup.create name viewGroupProvider emptyViewProvider setProps
190+
ViewGroup.create onError name viewGroupProvider emptyViewProvider setProps
191191

192-
let viewProvider = (name, createView)
192+
let viewProvider onError = (name, createView onError)
193193

194194
let internal reactComponent = ReactComponent.makeLazy (fun (props: ToolbarComponentProps) -> ReactNativeElementGroup {
195195
Name = name

ReactFSharp.Android/Widget/ViewPager.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -166,12 +166,12 @@ module ViewPager =
166166
let setProps (view: ViewPager) (props: IViewPagerProps) =
167167
ViewGroup.setProps view props
168168

169-
let private createView context =
169+
let private createView onError context =
170170
let emptyViewProvider () = (new Space(context)) :> View
171171
let viewGroupProvider () = new ViewPager(context)
172-
ViewGroup.create name viewGroupProvider emptyViewProvider setProps
172+
ViewGroup.create onError name viewGroupProvider emptyViewProvider setProps
173173

174-
let viewProvider = (name, createView)
174+
let viewProvider onError = (name, createView onError)
175175

176176
let internal reactComponent = ReactComponent.makeLazy (fun (props: ViewPagerComponentProps) -> ReactNativeElementGroup {
177177
Name = name

ReactFSharp/ReactView.fs

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -46,30 +46,20 @@ module ReactView =
4646

4747
let private dispose (disposable: IDisposable) = disposable.Dispose()
4848

49-
let rec observe<'view> (reactView: ReactView): IObservable<Option<'view>> =
50-
let createObservable (observer: IObserver<Option<'view>>) =
51-
match reactView with
52-
| ReactStatefulView statefulView ->
53-
let mapper (reactView: ReactView)=
54-
observe reactView
55-
56-
statefulView.State
57-
|> Observable.flatmap mapper
58-
|> Observable.subscribeObserver observer
59-
| ReactView view ->
60-
Some (view.View :?> 'view) |> observer.OnNext
61-
observer.OnCompleted ()
62-
Disposable.Empty
63-
| ReactViewGroup view ->
64-
Some (view.View :?> 'view) |> observer.OnNext
65-
observer.OnCompleted ()
66-
Disposable.Empty
67-
| ReactViewNone ->
68-
None |> observer.OnNext
69-
observer.OnCompleted ()
70-
Disposable.Empty
71-
72-
Observable.Create(createObservable)
49+
let rec private observe<'view when 'view :> IDisposable> (reactView: ReactView): IObservable<Option<'view>> =
50+
match reactView with
51+
| ReactStatefulView statefulView ->
52+
let mapper (reactView: ReactView)=
53+
observe reactView
54+
55+
statefulView.State
56+
|> Observable.flatmap mapper
57+
| ReactView view ->
58+
Some (view.View :?> 'view) |> Observable.single
59+
| ReactViewGroup view ->
60+
Some (view.View :?> 'view) |> Observable.single
61+
| ReactViewNone ->
62+
None |> Observable.single
7363

7464
let private createViewInternal<'view, 'props when 'view :> IDisposable>
7565
(name: string)
@@ -119,7 +109,7 @@ module ReactView =
119109
ReactView <| createViewInternal name viewProvider setProps initialProps
120110
createReactView
121111

122-
let createViewGroup<'view, 'viewGroup, 'props when 'viewGroup :> IDisposable>
112+
let createViewGroup<'view, 'viewGroup, 'props when 'view :> IDisposable and 'viewGroup :> IDisposable>
123113
(onError: Exception -> unit)
124114
(name: string)
125115
(viewGroupProvider: unit -> 'viewGroup)
@@ -294,5 +284,5 @@ module ReactView =
294284
view
295285

296286
let dom = ReactDom.render element
297-
updateWith dom ReactViewNone
287+
updateWith dom ReactViewNone |> observe
298288

0 commit comments

Comments
 (0)