Don't dismiss keyboard on command input appear
This commit is contained in:
parent
7745f1accb
commit
49b08e5118
|
@ -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]]]))]]))))
|
||||||
|
|
Loading…
Reference in New Issue