aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClombrong <cromblong@egregore.fun>2025-08-14 15:59:11 +0200
committerClombrong <cromblong@egregore.fun>2025-08-14 16:02:28 +0200
commitc7e8f4df093aff8f9acf35d25c8cf62ff0417013 (patch)
tree67d98cf9debc406f1c3f20dd3c6744eadd1ac4aa
parentdf1826ea44eb8ae1869706678e20c1cb62b8d029 (diff)
feat(session): start xmpp stream via signals
-rw-r--r--lib/session.ml9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/session.ml b/lib/session.ml
index 292cd19..58a80db 100644
--- a/lib/session.ml
+++ b/lib/session.ml
@@ -4,6 +4,7 @@ open Lwt_react
type connection_step =
| Starting_stream of string
+ | Negotiating_features of Stream.features
type state =
| Disconnected
@@ -42,7 +43,7 @@ let create (domain : string) (config : Stream.config) : (state signal * (unit ->
then start domain portal >>= handle_features
else handle_features rest
| features -> Lwt.return features
- in start domain portal >>= handle_features
+ in handle_features _features
in update (Connected (portal, features))
in
let+ () = S.map_s
@@ -50,7 +51,11 @@ let create (domain : string) (config : Stream.config) : (state signal * (unit ->
| Opening_portal domain ->
let+ portal = Portal.connect domain
in update (Connecting (portal, Starting_stream domain))
- | Connecting (portal, _) -> connect portal
+ | Connecting (portal, Starting_stream domain) ->
+ let+ features = Stream.start domain portal
+ in update (Connecting (portal, Negotiating_features features))
+ | Connecting (portal, Negotiating_features features) ->
+ connect portal features
| _ -> Lwt.return_unit)
state >|= S.keep;
in state, fun () -> update (Opening_portal domain)