summaryrefslogtreecommitdiff
path: root/editor/actions/add_page.ml
diff options
context:
space:
mode:
authorSébastien Dailly <sebastien@dailly.me>2022-02-07 16:21:26 +0100
committerSébastien Dailly <sebastien@dailly.me>2022-02-07 16:43:33 +0100
commitfe2cced55e1b44dbae57e55fe0f459c85e7369cb (patch)
treee7ca5f015da050b37aa759a277198512236c97f5 /editor/actions/add_page.ml
parent1eeaf137bd30aff1bef34d05eeec686f6da8959d (diff)
Application unification
Diffstat (limited to 'editor/actions/add_page.ml')
-rwxr-xr-xeditor/actions/add_page.ml44
1 files changed, 37 insertions, 7 deletions
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)