Don't dismiss keyboard on command input appear

This commit is contained in:
virvar 2016-05-25 14:50:52 +03:00
parent 7745f1accb
commit 49b08e5118
1 changed files with 54 additions and 46 deletions

View File

@ -4,7 +4,8 @@
[status-im.components.react :refer [view [status-im.components.react :refer [view
icon icon
touchable-highlight touchable-highlight
text-input]] text-input
dismiss-keyboard!]]
[status-im.chat.views.suggestions :refer [suggestions-view]] [status-im.chat.views.suggestions :refer [suggestions-view]]
[status-im.chat.views.content-suggestions :refer [content-suggestions-view]] [status-im.chat.views.content-suggestions :refer [content-suggestions-view]]
[status-im.chat.views.command :as command] [status-im.chat.views.command :as command]
@ -14,7 +15,9 @@
(defn set-input-message [message] (defn set-input-message [message]
(dispatch [:set-chat-input-text message])) (dispatch [:set-chat-input-text message]))
(defn send [] (defn send [dismiss-keyboard]
(when dismiss-keyboard
(dismiss-keyboard!))
(dispatch [:send-chat-msg])) (dispatch [:send-chat-msg]))
(defn message-valid? [staged-commands message] (defn message-valid? [staged-commands message]
@ -22,9 +25,9 @@
(not= "!" message)) (not= "!" message))
(pos? (count staged-commands)))) (pos? (count staged-commands))))
(defn try-send [staged-commands message] (defn try-send [staged-commands message dismiss-keyboard]
(when (message-valid? staged-commands message) (when (message-valid? staged-commands message)
(send))) (send dismiss-keyboard)))
(defn plain-message-input-view [{:keys [command input-options validator]}] (defn plain-message-input-view [{:keys [command input-options validator]}]
(let [input-message (subscribe [:get-chat-input-text]) (let [input-message (subscribe [:get-chat-input-text])
@ -32,46 +35,51 @@
staged-commands (subscribe [:get-chat-staged-commands]) staged-commands (subscribe [:get-chat-staged-commands])
typing-command? (subscribe [:typing-command?])] typing-command? (subscribe [:typing-command?])]
(fn [{:keys [command input-options validator]}] (fn [{:keys [command input-options validator]}]
[view st/input-container (let [dismiss-keyboard (not (or command @typing-command?))]
(if command [view st/input-container
[content-suggestions-view]
[suggestions-view])
[view st/input-view
(if command
[command/command-icon command]
[touchable-highlight {:on-press #(dispatch [:switch-command-suggestions])
:style st/switch-commands-touchable}
[view nil
(if @typing-command?
[icon :close-gray st/close-icon]
[icon :list st/list-icon])]])
[text-input (merge {:style (if command st-command/command-input st/message-input) ;; st-command/command-input
:autoFocus false
:onChangeText (fn [text]
((if command
command/set-input-message
set-input-message)
text))
:onSubmitEditing (fn []
(if command
(command/try-send @input-command validator)
(try-send @staged-commands
@input-message)))}
input-options)
(if command (if command
@input-command [content-suggestions-view]
@input-message)] [suggestions-view])
;; TODO emoticons: not implemented [view st/input-view
(when (not command) (if command
[icon :smile st/smile-icon]) [command/command-icon command]
(if command [touchable-highlight {:on-press #(dispatch [:switch-command-suggestions])
(if (command/valid? @input-command validator) :style st/switch-commands-touchable}
[touchable-highlight {:on-press command/send-command} [view nil
[view st/send-container [icon :send st/send-icon]]] (if @typing-command?
[touchable-highlight {:on-press command/cancel-command-input} [icon :close-gray st/close-icon]
[view st-command/cancel-container [icon :list st/list-icon])]])
[icon :close-gray st-command/cancel-icon]]]) [text-input (merge {:style (if command st-command/command-input st/message-input) ;; st-command/command-input
(when (message-valid? @staged-commands @input-message) :autoFocus false
[touchable-highlight {:on-press send} :blurOnSubmit dismiss-keyboard
[view st/send-container :onChangeText (fn [text]
[icon :send st/send-icon]]]))]]))) ((if command
command/set-input-message
set-input-message)
text))
:onSubmitEditing (fn []
(if command
(command/try-send @input-command validator)
(try-send @staged-commands
@input-message
dismiss-keyboard)))}
input-options)
(if command
@input-command
@input-message)]
;; TODO emoticons: not implemented
(when (not command)
[icon :smile st/smile-icon])
(if command
(if (command/valid? @input-command validator)
[touchable-highlight {:on-press command/send-command}
[view st/send-container [icon :send st/send-icon]]]
[touchable-highlight {:on-press command/cancel-command-input}
[view st-command/cancel-container
[icon :close-gray st-command/cancel-icon]]])
(when (message-valid? @staged-commands @input-message)
[touchable-highlight {:on-press #(try-send @staged-commands
@input-message
dismiss-keyboard)}
[view st/send-container
[icon :send st/send-icon]]]))]]))))