parent
989d4610f2
commit
ef3668044b
|
@ -25,7 +25,8 @@
|
|||
handle-command
|
||||
get-command-handler
|
||||
load-commands
|
||||
apply-staged-commands]]
|
||||
apply-staged-commands
|
||||
check-suggestion]]
|
||||
[syng-im.handlers.sign-up :as sign-up-service]
|
||||
|
||||
[syng-im.models.chats :refer [create-chat
|
||||
|
@ -392,7 +393,10 @@
|
|||
|
||||
(register-handler :set-chat-input-text
|
||||
(fn [db [_ text]]
|
||||
(set-chat-input-text db text)))
|
||||
(let [{:keys [command]} (check-suggestion db text)]
|
||||
(-> db
|
||||
(set-chat-input-text text)
|
||||
(set-chat-command command)))))
|
||||
|
||||
(register-handler :set-chat-command
|
||||
(fn [db [_ command-key]]
|
||||
|
|
|
@ -154,21 +154,21 @@
|
|||
|
||||
(defn intro [db]
|
||||
(dispatch [:received-msg
|
||||
{:msg-id (random/id)
|
||||
{:msg-id :intro-message1
|
||||
:content "Hello there! It's Syng, a Dapp browser in your phone."
|
||||
:content-type text-content-type
|
||||
:outgoing false
|
||||
:from "console"
|
||||
:to "me"}])
|
||||
(dispatch [:received-msg
|
||||
{:msg-id (random/id)
|
||||
{:msg-id :intro-message2
|
||||
:content (str "Syng uses a highly secure key-pair authentication type "
|
||||
"to provide you a reliable way to access your account")
|
||||
:content-type text-content-type
|
||||
:outgoing false
|
||||
:from "console"
|
||||
:to "me"}])
|
||||
(let [msg-id (random/id)]
|
||||
(let [msg-id :intro-message3]
|
||||
(dispatch [:received-msg
|
||||
{:msg-id msg-id
|
||||
:content (commands/format-command-request-msg-content
|
||||
|
|
|
@ -9,23 +9,27 @@
|
|||
get-chat-command-to-msg-id
|
||||
clear-staged-commands]]
|
||||
[syng-im.utils.utils :refer [log on-error http-get]]
|
||||
[syng-im.utils.logging :as log]))
|
||||
[syng-im.utils.logging :as log]
|
||||
[clojure.string :as s]))
|
||||
|
||||
(defn suggestion? [text]
|
||||
(= (get text 0) "!"))
|
||||
|
||||
(defn get-suggestions [db text]
|
||||
(if (= (get text 0) "!")
|
||||
(if (suggestion? text)
|
||||
;; TODO change 'commands' to 'suggestions'
|
||||
(filterv #(.startsWith (:text %) text) (get-commands db))
|
||||
[]))
|
||||
|
||||
(defn get-command [db text]
|
||||
(when (= (get text 0) "!")
|
||||
(when (suggestion? text)
|
||||
;; TODO change 'commands' to 'suggestions'
|
||||
(first (filter #(= (:text %) text) (get-commands db)))))
|
||||
|
||||
(defn handle-command [db command-key content]
|
||||
(when-let [command-handler (get-chat-command-request db)]
|
||||
(let [to-msg-id (get-chat-command-to-msg-id db)]
|
||||
(command-handler to-msg-id command-key content)))
|
||||
(let [to-msg-id (get-chat-command-to-msg-id db)]
|
||||
(command-handler to-msg-id command-key content)))
|
||||
db)
|
||||
|
||||
(defn get-command-handler [db command-key content]
|
||||
|
@ -53,3 +57,10 @@
|
|||
|
||||
(defn load-commands []
|
||||
(http-get "chat-commands.js" execute-commands-js nil))
|
||||
|
||||
(defn check-suggestion [db text]
|
||||
(when-let [suggestion-text (re-matches #"^![^\s]+\s" text)]
|
||||
(let [suggestion-text' (s/trim suggestion-text)
|
||||
[suggestion] (filter #(= suggestion-text' (:text %))
|
||||
(get-commands db))]
|
||||
suggestion)))
|
||||
|
|
|
@ -38,7 +38,10 @@
|
|||
|
||||
(register-sub :get-suggestions
|
||||
(fn [db _]
|
||||
(let [input-text (reaction (get-in @db (db/chat-input-text-path (current-chat-id @db))))]
|
||||
(let [input-text (->> (current-chat-id @db)
|
||||
db/chat-input-text-path
|
||||
(get-in @db)
|
||||
(reaction))]
|
||||
(reaction (get-suggestions @db @input-text)))))
|
||||
|
||||
(register-sub :get-commands
|
||||
|
|
Loading…
Reference in New Issue