@@ -337,19 +337,19 @@ listen errorTagger messageTagger connectionStatusTagger wsPort path =
337
337
338
338
339
339
onEffects : Platform .Router msg (Msg msg ) -> List (MyCmd msg ) -> List (MySub msg ) -> State msg -> Task Never (State msg )
340
- onEffects router cmds newSubs state =
340
+ onEffects router cmds subs state =
341
341
let
342
- ( newSubsDict , subErrorTasks ) =
343
- List . foldl ( addMySub router state) ( Dict . empty, [] ) newSubs
342
+ ( listeners , subErrorTasks ) =
343
+ List . foldl ( addMySub router state) ( Dict . empty, [] ) subs
344
344
345
- oldListeners =
346
- Dict . diff state. listeners newSubsDict
345
+ stoppedListening =
346
+ Dict . diff state. listeners listeners
347
347
348
- newListeners =
349
- Dict . diff newSubsDict state. listeners
348
+ startedListening =
349
+ Dict . diff listeners state. listeners
350
350
351
- keepListeners =
352
- Dict . intersect state. listeners newSubsDict
351
+ keptListening =
352
+ Dict . diff state. listeners stoppedListening
353
353
354
354
handleOneCmd state cmd tasks =
355
355
let
@@ -363,28 +363,22 @@ onEffects router cmds newSubs state =
363
363
in
364
364
Task . sequence ( List . reverse <| tasks)
365
365
&> Task . sequence ( List . reverse <| subErrorTasks)
366
- &> Task . succeed { cmdState | listeners = Dict . union keepListeners newListeners }
366
+ &> Task . succeed { cmdState | listeners = listeners }
367
367
368
368
369
369
addMySub : Platform .Router msg (Msg msg ) -> State msg -> MySub msg -> ( ListenerDict msg , List (Task x () ) ) -> ( ListenerDict msg , List (Task x () ) )
370
370
addMySub router state sub ( dict, errorTasks ) =
371
371
case sub of
372
372
Listen errorTagger messageTagger connectionStatusTagger wsPort path ->
373
373
let
374
- error msg =
375
- errorTagger ( wsPort, path, msg )
376
-
377
374
newSub =
378
375
{ messageTagger = messageTagger
379
376
, connectionStatusTagger = connectionStatusTagger
380
377
}
381
-
382
- newErrorTasks =
383
- Dict . get ( wsPort, path ) dict
384
- |?> ( \ _ -> Platform . sendToApp router ( error " Listener already exists" ) :: errorTasks)
385
- ?= errorTasks
386
378
in
387
- ( Dict . insert ( wsPort, path ) newSub dict, newErrorTasks )
379
+ Dict . get ( wsPort, path ) dict
380
+ |?> ( \ _ -> ( dict, Platform . sendToApp router ( errorTagger ( wsPort, path, " Another listener exists" )) :: errorTasks ))
381
+ ?= ( Dict . insert ( wsPort, path ) newSub dict, errorTasks )
388
382
389
383
390
384
settings0 : Platform .Router msg (Msg msg ) -> (a -> Msg msg ) -> Msg msg -> { onError : a -> Task msg () , onSuccess : Never -> Task x () }
0 commit comments