diff options
author | Clombrong <cromblong@egregore.fun> | 2025-08-14 15:59:11 +0200 |
---|---|---|
committer | Clombrong <cromblong@egregore.fun> | 2025-08-14 16:02:28 +0200 |
commit | c7e8f4df093aff8f9acf35d25c8cf62ff0417013 (patch) | |
tree | 67d98cf9debc406f1c3f20dd3c6744eadd1ac4aa | |
parent | df1826ea44eb8ae1869706678e20c1cb62b8d029 (diff) |
feat(session): start xmpp stream via signals
-rw-r--r-- | lib/session.ml | 9 |
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) |