Fix console responses

Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
This commit is contained in:
janherich 2018-05-28 15:48:49 +02:00 committed by Andrey Shovkoplyas
parent af7c356134
commit 5ee356fe4f
No known key found for this signature in database
GPG Key ID: EAAB7C8622D860A4
4 changed files with 39 additions and 53 deletions

View File

@ -1,21 +1,20 @@
(ns status-im.chat.console
(:require [status-im.ui.components.styles :refer [default-chat-color]]
[status-im.utils.random :as random]
[status-im.constants :as constants]
[status-im.utils.clocks :as utils.clocks]
[status-im.i18n :as i18n]
[clojure.string :as string]))
[status-im.i18n :as i18n]))
(defn console-message [{:keys [message-id content content-type]
:or {message-id (random/id)}}]
(defn console-message [{:keys [timestamp message-id content content-type]}]
{:message-id message-id
:outgoing false
:chat-id constants/console-chat-id
:from constants/console-chat-id
:to "me"
:timestamp timestamp
:clock-value (utils.clocks/send 0)
:content content
:content-type content-type})
:content-type content-type
:show? true})
(def chat
{:chat-id constants/console-chat-id

View File

@ -8,47 +8,52 @@
goog.string.format))
(defn console-respond-command-messages
[{:keys [name] :as command} handler-data random-id-seq]
(when command
(case name
"js" (let [{:keys [err data messages]} handler-data
content (or err data)
message-events (mapv (fn [{:keys [message type]} id]
(console-chat/console-message
{:message-id id
:content (str type ": " message)
:content-type constants/text-content-type}))
messages random-id-seq)]
(conj message-events
(console-chat/console-message
{:message-id (first random-id-seq)
:content (str content)
:content-type constants/text-content-type})))
(log/debug "ignoring command: " name))))
[{:keys [name] :as command} handler-data {:keys [random-id-seq now]}]
(when-let [messages (case name
"js" (let [{:keys [err data messages]} handler-data
content (or err data)
message-events (mapv (fn [{:keys [message type]} id]
(console-chat/console-message
{:message-id id
:timestamp now
:content (str type ": " message)
:content-type constants/text-content-type}))
messages random-id-seq)]
(conj message-events
(console-chat/console-message
{:message-id (first random-id-seq)
:timestamp now
:content (str content)
:content-type constants/text-content-type})))
(log/debug "ignoring command: " name))]
{:dispatch [:chat-received-message/add messages]}))
(defn faucet-base-url->url [url]
(str url "/donate/0x%s"))
(defn- faucet-response-event [message-id content]
(defn- faucet-response-event [now message-id content]
[:chat-received-message/add
[(console-chat/console-message
{:message-id message-id
:timestamp now
:content content
:content-type constants/text-content-type})]])
(def console-commands->fx
{"faucet"
(fn [{:keys [db random-id]} {:keys [params]}]
(fn [{:keys [db random-id now]} {:keys [params]}]
(let [current-address (get-in db [:account/account :address])
faucet-url (faucet-base-url->url (:url params))]
{:http-get {:url (gstring/format faucet-url current-address)
:success-event-creator (fn [_]
(faucet-response-event
now
random-id
(i18n/label :t/faucet-success)))
:failure-event-creator (fn [event]
(log/error "Faucet error" event)
(faucet-response-event
now
random-id
(i18n/label :t/faucet-error)))}}))})

View File

@ -6,8 +6,7 @@
[status-im.constants :as constants]
[status-im.utils.clocks :as utils.clocks]
[status-im.utils.handlers :as handlers]
[status-im.utils.handlers-macro :as handlers-macro]
[status-im.utils.random :as random]))
[status-im.utils.handlers-macro :as handlers-macro]))
;;;; Handlers
@ -62,10 +61,11 @@
;; TODO(alwx): refactor this when status-im.commands.handlers.jail is refactored
(handlers/register-handler-fx
:chat-received-message/bot-response
(fn [{:contacts/keys [contacts]} [_ {:keys [chat-id] :as params} {:keys [result bot-id] :as data}]]
message-model/receive-interceptors
(fn [{:keys [random-id now]} [{:keys [chat-id] :as params} {:keys [result bot-id] :as data}]]
(let [{:keys [returned context]} result
{:keys [markup text-message err]} returned
{:keys [log-messages update-db default-db]} context
{:keys [update-db default-db]} context
content (or err text-message)]
(when update-db
(re-frame/dispatch [:update-bot-db {:bot bot-id
@ -74,27 +74,15 @@
:bot-id bot-id
:result data
:default-db default-db)])
(doseq [message log-messages]
(let [{:keys [message type]} message]
(when (or (not= type "debug")
js/goog.DEBUG
(get-in contacts [chat-id :debug?]))
(re-frame/dispatch [:chat-received-message/add
[{:message-id (random/id)
:content (str type ": " message)
:content-type constants/content-type-log-message
:outgoing false
:clock-value (utils.clocks/send 0)
:chat-id chat-id
:from chat-id
:to "me"}]]))))
(when content
(re-frame/dispatch [:chat-received-message/add
[{:message-id (random/id)
[{:message-id random-id
:timestamp now
:content (str content)
:content-type constants/text-content-type
:outgoing false
:clock-value (utils.clocks/send 0)
:chat-id chat-id
:from chat-id
:to "me"}]])))))
:to "me"
:show? true}]])))))

View File

@ -126,12 +126,11 @@
request-command (:request-command content)
command-request? (and (= content-type constants/content-type-command-request)
request-command)
new-timestamp (or timestamp now)
add-message-fn (if batch? add-batch-message add-single-message)]
(handlers-macro/merge-fx cofx
{:confirm-message-processed [{:web3 web3
:js-obj js-obj}]}
(add-message-fn (cond-> (assoc message :timestamp new-timestamp)
(add-message-fn (cond-> message
public-key
(assoc :user-statuses {public-key (if current-chat? :seen :received)})
(not clock-value)
@ -383,11 +382,6 @@
:show? true}
chat)))
(defn- add-console-responses
[command handler-data {:keys [random-id-seq]}]
{:dispatch (->> (console-events/console-respond-command-messages command handler-data random-id-seq)
(vector :chat-received-message/add))})
(defn send-command
[{{:keys [current-public-key chats network] :as db} :db :keys [now] :as cofx} params]
(let [{{:keys [handler-data to-message command] :as content} :command chat-id :chat-id} params
@ -396,7 +390,7 @@
request (:request handler-data)]
(handlers-macro/merge-fx cofx
(upsert-and-send (prepare-command-message current-public-key chat now request content network))
(add-console-responses command handler-data)
(console-events/console-respond-command-messages command handler-data)
(requests-events/request-answered chat-id to-message))))
(defn invoke-console-command-handler