[6628] don't block message sending when mailserver disconnected

Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
This commit is contained in:
yenda 2018-11-08 09:57:46 +01:00 committed by Dmitry Novotochinov
parent 5594fb6c60
commit 93db31d867
No known key found for this signature in database
GPG Key ID: 43D1DAF5AD39C927
3 changed files with 8 additions and 18 deletions

View File

@ -27,12 +27,6 @@
(fn [state]
(#{:error :disconnected} state)))
(re-frame/reg-sub
:mailserver/connected?
:<- [:mailserver/state]
(fn [state]
(= :connected state)))
(re-frame/reg-sub
:mailserver/current-id
(fn [db]

View File

@ -14,22 +14,20 @@
(animation/timing spin-value {:toValue to-spin-value
:duration 300})))))
(defn sendable? [input-text network-status mailserver-connected?]
(defn sendable? [input-text network-status]
(let [trimmed (string/trim input-text)]
(not (or (string/blank? trimmed)
(= trimmed "/")
(= :offline network-status)
(not mailserver-connected?)))))
(= :offline network-status)))))
(defview send-button-view []
(letsubs [{:keys [command-completion]} [:selected-chat-command]
{:keys [input-text seq-arg-input-text]} [:get-current-chat]
network-status [:network-status]
mailserver-connected? [:mailserver/connected?]
spin-value (animation/create-value 1)]
{:component-did-update (send-button-view-on-update {:spin-value spin-value
:command-completion command-completion})}
(when (and (sendable? input-text network-status mailserver-connected?)
(when (and (sendable? input-text network-status)
(or (not command-completion)
(#{:complete :less-than-needed} command-completion)))
[react/touchable-highlight {:on-press #(re-frame/dispatch [:chat.ui/send-current-message])}

View File

@ -242,11 +242,11 @@
:current-public-key current-public-key)]))]]
[connectivity/error-view]])))
(views/defview send-button [inp-ref network-status mailserver-connected?]
(views/defview send-button [inp-ref network-status]
(views/letsubs [{:keys [input-text]} [:get-current-chat]]
(let [empty? (= "" input-text)
offline? (= :offline network-status)
inactive? (or empty? offline? (not mailserver-connected?))]
inactive? (or empty? offline?)]
[react/touchable-highlight {:style styles/send-button
:disabled inactive?
:on-press (fn []
@ -288,8 +288,7 @@
(views/defview chat-text-input [chat-id input-text]
(views/letsubs [inp-ref (atom nil)
network-status [:network-status]
mailserver-connected? [:mailserver/connected?]]
network-status [:network-status]]
{:component-will-update
(fn [e [_ new-chat-id new-input-text]]
(let [[_ old-chat-id] (.. e -props -argv)]
@ -310,8 +309,7 @@
:default-value input-text
:on-content-size-change #(set-container-height-fn (.-height (.-contentSize (.-nativeEvent %))))
:submit-shortcut {:key "Enter"}
:on-submit-editing #(when (and (= :online network-status)
mailserver-connected?)
:on-submit-editing #(when (= :online network-status)
(.clear @inp-ref)
(.focus @inp-ref)
(re-frame/dispatch [:chat.ui/send-current-message]))
@ -319,7 +317,7 @@
(let [native-event (.-nativeEvent e)
text (.-text native-event)]
(re-frame/dispatch [:chat.ui/set-chat-input-text text])))}]
[send-button inp-ref network-status mailserver-connected?]])))
[send-button inp-ref network-status]])))
(views/defview chat-view []
(views/letsubs [{:keys [input-text chat-id] :as current-chat} [:get-current-chat]]