From fe2cced55e1b44dbae57e55fe0f459c85e7369cb Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Mon, 7 Feb 2022 16:21:26 +0100 Subject: Application unification --- editor/actions/add_page.ml | 44 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 7 deletions(-) (limited to 'editor/actions/add_page.ml') diff --git a/editor/actions/add_page.ml b/editor/actions/add_page.ml index b817573..3ada726 100755 --- a/editor/actions/add_page.ml +++ b/editor/actions/add_page.ml @@ -1,11 +1,41 @@ -type t = Forms.Events.event option Note.E.send +module Js = Js_of_ocaml.Js -let apply - : t -> State.t -> State.t - = fun close_sender state -> +module M = struct + + type t = Forms.Add_page.t + + let key_of_title + : Jstr.t -> Jstr.t + = fun title -> + title + + let apply + : t -> State.t -> State.t + = fun {title} state -> + let page_id = key_of_title title in + let new_date = (new%js Js.date_now)##getTime in + let content_obj = object%js + val content = Js.null + val title = Js.some title + val date = Js.some new_date + end in + State.load_page (Some page_id) state content_obj +end + +(** Create a new element *) +let create + : unit -> Event.t Note.event + = fun () -> let title = Jstr.v "Nouvelle page" in - let popup = Forms.Ui.popup + let ev = Forms.Ui.popup ~title ~form:(Some (Forms.Add_page.create ())) - close_sender in - { state with window = popup::state.window} + in + Note.E.map + (fun v -> Event.E + (v + , (module M : Event.Handler with type t = M.t ))) + (* Option.on_some trigger the event only when the pop up is validated. + Closing the popup doesn't do anything. + *) + (Note.E.Option.on_some ev) -- cgit v1.2.3