1+ open Eio.Std
2+
13(* Ocsigen
24 * http://www.ocsigen.org
35 *
@@ -39,7 +41,7 @@ open%client Js_of_ocaml
3941[%% client open Js_of_ocaml_lwt ]
4042[%% shared open Eliom_content.Html ]
4143[%% shared open Eliom_content.Html.F ]
42- [%% shared open Lwt.Syntax ]
44+ [%% shared]
4345
4446let % client clX = Ot_swipe. clX
4547let % client clY = Ot_swipe. clY
@@ -573,9 +575,7 @@ let%client set_default_fail f =
573575 :> exn -> Html_types. div_content Eliom_content.Html. elt)
574576
575577let % shared generate_content generator =
576- Lwt. catch
577- (fun () -> Eliom_shared.Value. local generator () )
578- (fun e -> Lwt. return (default_fail e))
578+ try Eliom_shared.Value. local generator () with e -> default_fail e
579579
580580(* on the client side we generate the contents of the initially visible page
581581 asynchronously so the tabs will be rendered right away *)
@@ -592,8 +592,8 @@ let%client generate_initial_contents ~spinner sleeper gen =
592592
593593(* on the server side we generate all the visible contents right away *)
594594let % server generate_initial_contents ~spinner: _ _ gen =
595- let * contents = generate_content gen in
596- Lwt. return ( contents, ref @@ None )
595+ let contents = generate_content gen in
596+ contents, ref @@ None
597597
598598let % shared
599599 make_lazy
@@ -614,30 +614,31 @@ let%shared
614614 =
615615 let gen_contents =
616616 (gen_contents
617- :> (unit -> Html_types. div_content elt Lwt. t) Eliom_shared.Value. t list )
617+ :> (unit -> Html_types. div_content elt) Eliom_shared.Value. t list )
618+ in
619+ let sleeper, wakener =
620+ Promise. create
621+ (* TODO: ciao-lwt: Translation is incomplete, [Promise.await] must be
622+ called on the promise when it's part of control-flow. *)
623+ ()
618624 in
619- let sleeper, wakener = Lwt. wait () in
620- let mk_contents : int -> 'gen -> ('a elt * ('a elt * 'gen) option ref) Lwt.t =
625+ let mk_contents : int -> 'gen -> 'a elt * ('a elt * 'gen) option ref =
621626 fun i gen ->
622627 if i = position
623628 then generate_initial_contents ~spinner sleeper gen
624629 else
625- Lwt. return
626- @@
627630 let s = spinner () in
628631 s, ref @@ Some (s, gen)
629632 in
630- let * contents, spinners_and_generators =
631- Lwt. map List. split
632- @@ Lwt_list. map_s (fun x -> x)
633- @@ List. mapi mk_contents gen_contents
633+ let contents, spinners_and_generators =
634+ List. split (List. map (fun x -> x) (List. mapi mk_contents gen_contents))
634635 in
635636 let carousel =
636637 make ?a ?vertical ~position ?transition_duration ?inertia ?swipeable
637638 ?allow_overswipe ?update ?disabled ?full_height ?make_transform
638639 ?make_page_attribute contents
639640 in
640- Lwt. wakeup wakener carousel.elt;
641+ Promise. resolve wakener carousel.elt;
641642 (* generate initial content (client-side) *)
642643 (* replace spinners with content when switched to for the first time *)
643644 let _ =
@@ -663,7 +664,7 @@ let%shared
663664 | None -> Lwt. return () )
664665 : unit )]
665666 in
666- Lwt. return carousel
667+ carousel
667668
668669let % shared bullet_class i pos size =
669670 Eliom_shared.React.S. l2
0 commit comments