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
icon
touchable-highlight
text-input]]
text-input
dismiss-keyboard!]]
[status-im.chat.views.suggestions :refer [suggestions-view]]
[status-im.chat.views.content-suggestions :refer [content-suggestions-view]]
[status-im.chat.views.command :as command]
@ -14,7 +15,9 @@
(defn set-input-message [message]
(dispatch [:set-chat-input-text message]))
(defn send []
(defn send [dismiss-keyboard]
(when dismiss-keyboard
(dismiss-keyboard!))
(dispatch [:send-chat-msg]))
(defn message-valid? [staged-commands message]
@ -22,9 +25,9 @@
(not= "!" message))
(pos? (count staged-commands))))
(defn try-send [staged-commands message]
(defn try-send [staged-commands message dismiss-keyboard]
(when (message-valid? staged-commands message)
(send)))
(send dismiss-keyboard)))
(defn plain-message-input-view [{:keys [command input-options validator]}]
(let [input-message (subscribe [:get-chat-input-text])
@ -32,46 +35,51 @@
staged-commands (subscribe [:get-chat-staged-commands])
typing-command? (subscribe [:typing-command?])]
(fn [{:keys [command input-options validator]}]
[view st/input-container
(if command
[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)
(let [dismiss-keyboard (not (or command @typing-command?))]
[view st/input-container
(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 send}
[view st/send-container
[icon :send st/send-icon]]]))]])))
[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
:blurOnSubmit dismiss-keyboard
: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
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]]]))]]))))