Skip to content

Commit 07c568a

Browse files
committed
Include subscriber overloads for UseElmish
1 parent 9557b41 commit 07c568a

2 files changed

Lines changed: 19 additions & 6 deletions

File tree

src/Feliz.UseElmish/UseElmish.fs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,3 +133,18 @@ type React =
133133

134134
static member inline useElmish(init: 'Model * Cmd<'Msg>, update: 'Msg -> 'Model -> 'Model * Cmd<'Msg>, ?dependencies: obj array) =
135135
React.useElmish((fun () -> Program.mkProgram (fun () -> init) update (fun _ _ -> ())), ?dependencies=dependencies)
136+
137+
static member inline useElmish(init: 'Arg -> 'Model * Cmd<'Msg>, update: 'Msg -> 'Model -> 'Model * Cmd<'Msg>, subscribe: 'Model -> Sub<'Msg>, arg: 'Arg, ?dependencies: obj array) =
138+
React.useElmish((fun () ->
139+
Program.mkProgram init update (fun _ _ -> ())
140+
|> Program.withSubscription subscribe), arg, ?dependencies=dependencies)
141+
142+
static member inline useElmish(init: unit -> 'Model * Cmd<'Msg>, update: 'Msg -> 'Model -> 'Model * Cmd<'Msg>, subscribe: 'Model -> Sub<'Msg>, ?dependencies: obj array) =
143+
React.useElmish((fun () ->
144+
Program.mkProgram init update (fun _ _ -> ())
145+
|> Program.withSubscription subscribe), ?dependencies=dependencies)
146+
147+
static member inline useElmish(init: 'Model * Cmd<'Msg>, update: 'Msg -> 'Model -> 'Model * Cmd<'Msg>, subscribe: 'Model -> Sub<'Msg>, ?dependencies: obj array) =
148+
React.useElmish((fun () ->
149+
Program.mkProgram (fun () -> init) update (fun _ _ -> ())
150+
|> Program.withSubscription subscribe), ?dependencies=dependencies)

tests/Feliz.UseElmish/Main.test.fs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -181,14 +181,12 @@ module Subscriber =
181181
100
182182
{ new System.IDisposable with member _.Dispose() = clearInterval subscriptionId }
183183

184-
let makeProgram initialValue =
185-
Program.mkProgram (fun () -> init initialValue) update (fun _ _ -> ())
186-
|> Program.withSubscription (fun _model ->
187-
[ ["timer"], subscribeToTimer ])
184+
let subscribe _model =
185+
[ ["timer"], subscribeToTimer ]
188186

189187
[<ReactComponent>]
190188
let render (props: {| initialValue: int |}) =
191-
let model, dispatch = React.useElmish((fun () -> makeProgram props.initialValue), (), [||])
189+
let model, dispatch = React.useElmish((fun () -> init props.initialValue), update, subscribe, [||])
192190

193191
Html.div [
194192
Html.h1 [
@@ -220,7 +218,7 @@ describe "UseElmish with subscriptions" <| fun () ->
220218

221219
do!
222220
RTL.waitFor (fun () ->
223-
let ticks = render.getByTestId("subscriber-ticks").innerText |> int
221+
let ticks = render.getByTestId("subscriber-ticks").textContent |> int
224222
expect(ticks >= 3).toBeTruthy() //"Subscriber should have ticked at least 3 times"
225223
)
226224

0 commit comments

Comments
 (0)