diff --git a/.re-natal b/.re-natal index c558344931..6fe95ae0dd 100644 --- a/.re-natal +++ b/.re-natal @@ -1,7 +1,7 @@ { "name": "StatusIm", "interface": "reagent", - "androidHost": "localhost", + "androidHost": "10.0.3.2", "modules": [ "react-native-contacts", "react-native-invertible-scroll-view", diff --git a/env/dev/env/android/main.cljs b/env/dev/env/android/main.cljs index 6b07f8d437..3a4d1ba9d2 100644 --- a/env/dev/env/android/main.cljs +++ b/env/dev/env/android/main.cljs @@ -15,7 +15,7 @@ (re-frame.core/dispatch [:load-commands!])) (figwheel/watch-and-reload - :websocket-url "ws://localhost:3449/figwheel-ws" + :websocket-url "ws://10.0.3.2:3449/figwheel-ws" :heads-up-display false :jsload-callback callback) diff --git a/env/dev/env/ios/main.cljs b/env/dev/env/ios/main.cljs index 5a8ae3939b..15c9273607 100644 --- a/env/dev/env/ios/main.cljs +++ b/env/dev/env/ios/main.cljs @@ -12,8 +12,8 @@ (def root-el (r/as-element [reloader])) (figwheel/watch-and-reload - :websocket-url "ws://localhost:3449/figwheel-ws" + :websocket-url "ws://10.0.1.15:3449/figwheel-ws" :heads-up-display false :jsload-callback #(swap! cnt inc)) -(rr/enable-re-frisk-remote! {:host "10.0.1.15:4567" :on-init core/init :pre-send (fn [db] (update db :chats #(into {} %)))}) \ No newline at end of file +(rr/enable-re-frisk-remote! {:host "localhost:4567" :on-init core/init :pre-send (fn [db] (update db :chats #(into {} %)))}) \ No newline at end of file diff --git a/src/status_im/chat/models/commands.cljs b/src/status_im/chat/models/commands.cljs index f9d7d93851..6937ee5242 100644 --- a/src/status_im/chat/models/commands.cljs +++ b/src/status_im/chat/models/commands.cljs @@ -79,43 +79,36 @@ account (get accounts current-account-id) commands (-> (into [] global-commands) (into commands)) - {chat-contacts :contacts} (get chats chat-id)] + {chat-contacts :contacts + group-chat :group-chat} (get chats chat-id)] (remove (fn [{:keys [scope]}] (or (and (:registered-only? scope) (not (:address account))) (and (not (:personal-chats? scope)) - (= (count chat-contacts) 1)) + (not group-chat)) (and (not (:group-chats? scope)) - (> (count chat-contacts) 1)) + group-chat) (and (not (:can-use-for-dapps? scope)) (every? (fn [{:keys [identity]}] (get-in contacts [identity :dapp?])) chat-contacts)))) commands))) -(defn set-command-for-content - "Sets the information about command for a specified message content. - We need to use this command because `command` field in persistent storage (db) doesn't - contain all information about command — we save only the name of it." - [commands global-commands content] - (if (map? content) - (let [{:keys [command bot]} content] - (if (and bot (not (bots-constants/mailman-bot? bot))) - (update content :command #((keyword bot) global-commands)) - (update content :command #((keyword command) commands)))) - content)) +(defn- commands-list->map [commands] + (->> commands + (map #(vector (:name %) %)) + (into {}))) -(defn set-command-for-request +(defn replace-name-with-request "Sets the information about command for a specified request." - [{:keys [message-id content] :as message} possible-requests possible-commands] - (let [requests (->> possible-requests - (map (fn [{:keys [request] :as message}] - [(:message-id request) message])) - (into {})) - commands (->> possible-commands - (map (fn [{:keys [name] :as message}] - [name message])) - (into {}))] - (assoc content :command (or (get requests message-id) - (get commands (get content :command)))))) \ No newline at end of file + ([{:keys [content] :as message} commands requests] + (if (map? content) + (let [{:keys [command content-command]} content + commands (commands-list->map commands) + requests (commands-list->map requests)] + (assoc content :command (or (get requests (or content-command command)) + (get commands command)))) + content)) + ([message commands] + (replace-name-with-request message commands []))) \ No newline at end of file diff --git a/src/status_im/chat/styles/message/message.cljs b/src/status_im/chat/styles/message/message.cljs index b8656e5a6e..fac6c7f8e3 100644 --- a/src/status_im/chat/styles/message/message.cljs +++ b/src/status_im/chat/styles/message/message.cljs @@ -120,7 +120,7 @@ :android {:font-size 13} :ios {:font-size 14}}) -(def comand-request-view +(def command-request-view {:paddingRight 16}) (def command-request-message-view diff --git a/src/status_im/chat/subs.cljs b/src/status_im/chat/subs.cljs index dbf170b690..c9c5dd22f6 100644 --- a/src/status_im/chat/subs.cljs +++ b/src/status_im/chat/subs.cljs @@ -3,6 +3,7 @@ [status-im.data-store.chats :as chats] [status-im.chat.constants :as const] [status-im.chat.models.input :as input-model] + [status-im.chat.models.commands :as commands-model] [status-im.chat.utils :as chat-utils] [status-im.chat.views.input.utils :as input-utils] [status-im.constants :refer [response-suggesstion-resize-duration @@ -62,15 +63,9 @@ (fn [_ [_ chat-id]] (chats/get-by-id chat-id))) -(reg-sub :get-commands-and-responses - (fn [{:keys [chats global-commands] :contacts/keys [contacts]} [_ chat-id]] - (->> (get-in chats [chat-id :contacts]) - (filter :is-in-chat) - (mapv (fn [{:keys [identity]}] - (let [{:keys [commands responses]} (get contacts identity)] - (merge responses commands)))) - (apply merge) - (merge global-commands)))) +(reg-sub :get-commands-for-chat + (fn [db [_ chat-id]] + (commands-model/commands-for-chat db chat-id))) (reg-sub :selected-chat-command diff --git a/src/status_im/chat/views/message/message.cljs b/src/status_im/chat/views/message/message.cljs index 89fcd2858e..b18e80c711 100644 --- a/src/status_im/chat/views/message/message.cljs +++ b/src/status_im/chat/views/message/message.cljs @@ -126,34 +126,31 @@ (defview message-content-command [{:keys [message-id content content-type chat-id to from outgoing] :as message}] - [commands [:get-commands-and-responses chat-id] - from-commands [:get-commands-and-responses from] - global-commands [:get :global-commands] - current-chat-id [:get-current-chat-id] - contact-chat [:get-in [:chats (if outgoing to from)]] - preview [:get-message-preview message-id]] - (let [commands (merge commands from-commands) - {:keys [command params]} (commands/set-command-for-content commands global-commands content) - {:keys [name type] - icon-path :icon} command] - [view st/content-command-view - (when (:color command) - [view st/command-container - [view (pill-st/pill command) - [text {:style pill-st/pill-text - :font :default} - (str (if (= :command type) chat-consts/command-char "?") name)]]]) - (when icon-path - [view st/command-image-view - [icon icon-path st/command-image]]) - [command-preview {:command (:name command) - :content-type content-type - :params params - :outgoing? outgoing - :preview preview - :contact-chat contact-chat - :contact-address (if outgoing to from) - :current-chat-id current-chat-id}]])) + (letsubs [commands [:get-commands-for-chat chat-id] + current-chat-id [:get-current-chat-id] + contact-chat [:get-in [:chats (if outgoing to from)]] + preview [:get-message-preview message-id]] + (let [{:keys [command params]} (commands/replace-name-with-request message commands) + {:keys [name type] + icon-path :icon} command] + [view st/content-command-view + (when (:color command) + [view st/command-container + [view (pill-st/pill command) + [text {:style pill-st/pill-text + :font :default} + (str (if (= :command type) chat-consts/command-char "?") name)]]]) + (when icon-path + [view st/command-image-view + [icon icon-path st/command-image]]) + [command-preview {:command (:name command) + :content-type content-type + :params params + :outgoing? outgoing + :preview preview + :contact-chat contact-chat + :contact-address (if outgoing to from) + :current-chat-id current-chat-id}]]))) (defn message-view [{:keys [same-author index group-chat] :as message} content] diff --git a/src/status_im/chat/views/message/request_message.cljs b/src/status_im/chat/views/message/request_message.cljs index fa7c4b1dbc..41777a5908 100644 --- a/src/status_im/chat/views/message/request_message.cljs +++ b/src/status_im/chat/views/message/request_message.cljs @@ -73,15 +73,15 @@ (defview message-content-command-request [{:keys [message-id chat-id]}] - (letsubs [requests [:chat-actions :possible-requests] - commands [:chat-actions :possible-commands] + (letsubs [commands [:get-commands-for-chat chat-id] + requests [:chat-actions :possible-requests] answered? [:is-request-answered? message-id] status-initialized? [:get :status-module-initialized?] markup [:get-message-preview message-id]] (fn [{:keys [message-id content from incoming-group] :as message}] (let [{:keys [prefill prefill-bot-db prefillBotDb params] text-content :text} content - {:keys [command content]} (commands/set-command-for-request message requests commands) + {:keys [command content]} (commands/replace-name-with-request message commands requests) command (if (and params command) (merge command {:prefill prefill :prefill-bot-db (or prefill-bot-db prefillBotDb)}) @@ -90,7 +90,7 @@ #(dispatch [:execute-command-immediately command]) (when (and (not answered?) status-initialized?) #(set-chat-command message-id command)))] - [view st/comand-request-view + [view st/command-request-view [touchable-highlight {:on-press on-press-handler} [view st/command-request-message-view