From c7e8f4df093aff8f9acf35d25c8cf62ff0417013 Mon Sep 17 00:00:00 2001 From: Clombrong Date: Thu, 14 Aug 2025 15:59:11 +0200 Subject: feat(session): start xmpp stream via signals --- lib/session.ml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'lib') 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) -- cgit v1.2.3