From 5fd9e7e24454b309fa803a7a937e1046082dda9b Mon Sep 17 00:00:00 2001 From: gered Date: Sun, 15 May 2016 19:41:14 -0400 Subject: [PATCH] update chat-demo cljs --- chat-demo/src/chat_demo/client.cljs | 49 ++++++++++++++++++----------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/chat-demo/src/chat_demo/client.cljs b/chat-demo/src/chat_demo/client.cljs index 235cae6..bc469b4 100644 --- a/chat-demo/src/chat_demo/client.cljs +++ b/chat-demo/src/chat_demo/client.cljs @@ -17,29 +17,40 @@ (def event-handlers {:on-open (fn [] - (let [msg-input (by-id "msg-input") - send-button (by-id "send-button") - send-message (fn [e] - (say (dom/value msg-input)) - (dom/set-value! msg-input ""))] - (toggle-element msg-input) - (toggle-element send-button) - (events/listen - (goog.events.KeyHandler. msg-input) - "key" - (fn [e] - (when (= (.-keyCode e) key-codes/ENTER) - (send-message e)))) - (events/listen - send-button - "click" - send-message))) + ; enable message sending UI + (toggle-element (by-id "msg-input")) + (toggle-element (by-id "send-button"))) :on-receive (fn [data] + ; show messages received from the server (dom/append! (by-id "room") (-> (dom/create-element "div") - (dom/set-text! (str "MSG::" (:msg data))))))}) + (dom/set-text! (str "MSG::" (:msg data)))))) + + :on-close + (fn [due-to-error? pending undelivered] + ; disable message sending UI + (toggle-element (by-id "msg-input")) + (toggle-element (by-id "send-button")))}) (defn ^:export run [] - (browserchannel/init! event-handlers)) \ No newline at end of file + ; wire-up UI events + (let [msg-input (by-id "msg-input") + send-button (by-id "send-button") + send-message (fn [e] + (say (dom/value msg-input)) + (dom/set-value! msg-input ""))] + (events/listen + (goog.events.KeyHandler. msg-input) + "key" + (fn [e] + (when (= (.-keyCode e) key-codes/ENTER) + (send-message e)))) + (events/listen + send-button + "click" + send-message)) + + ; initiate browserchannel session with the server + (browserchannel/connect! event-handlers))