From b96063ce5686799a8c76ddfb75b759bc55a421d6 Mon Sep 17 00:00:00 2001 From: Roman Volosovskyi Date: Tue, 5 Feb 2019 14:04:06 +0200 Subject: [PATCH] [#7422] Show feedback on mailserver error --- src/status_im/mailserver/core.cljs | 20 +++++++++++++++++--- src/status_im/utils/utils.cljs | 21 ++++++++++++--------- translations/en.json | 6 +++++- 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/src/status_im/mailserver/core.cljs b/src/status_im/mailserver/core.cljs index 6c12a7a6a6..00381bc89c 100644 --- a/src/status_im/mailserver/core.cljs +++ b/src/status_im/mailserver/core.cljs @@ -361,8 +361,22 @@ "mark mailserver status as `:error` if custom mailserver is used otherwise try to reconnect to another mailserver" [{:keys [db] :as cofx}] - (if (preferred-mailserver-id cofx) - {:db (update-mailserver-state db :error)} + (if-let [preferred-mailserver (preferred-mailserver-id cofx)] + (let [current-fleet (fleet/current-fleet db)] + {:db + (update-mailserver-state db :error) + :ui/show-confirmation + {:title (i18n/label :t/mailserver-error-title) + :content (i18n/label :t/mailserver-error-content) + :confirm-button-text (i18n/label :t/mailserver-pick-another) + :on-accept #(re-frame/dispatch + [:navigate-to :offline-messaging-settings]) + :extra-options [{:text (i18n/label :t/mailserver-retry) + :onPress #(re-frame/dispatch + [:mailserver.ui/connect-confirmed + current-fleet + preferred-mailserver]) + :style "default"}]}}) (let [{:keys [address]} (fetch-current cofx)] (fx/merge cofx {:mailserver/remove-peer address} @@ -384,7 +398,7 @@ (fx/merge cofx {:db (dissoc db :mailserver/connection-checks)} (when (= :connecting (:mailserver/state db)) - (change-mailserver cofx))) + (change-mailserver))) {:db (update db :mailserver/connection-checks dec)})))) (fx/defn reset-request-to diff --git a/src/status_im/utils/utils.cljs b/src/status_im/utils/utils.cljs index a65a218922..22cd28ecb9 100644 --- a/src/status_im/utils/utils.cljs +++ b/src/status_im/utils/utils.cljs @@ -24,20 +24,23 @@ (show-popup title content on-dismiss))) (defn show-confirmation - [{:keys [title content confirm-button-text on-dismiss on-accept on-cancel cancel-button-text]}] + [{:keys [title content confirm-button-text on-dismiss on-accept on-cancel cancel-button-text + extra-options]}] (.alert (.-Alert rn-dependencies/react-native) title content ;; Styles are only relevant on iOS. On Android first button is 'neutral' and second is 'positive' (clj->js - (vector (merge {:text (or cancel-button-text (i18n/label :t/cancel)) - :style "cancel" - :accessibility-label :cancel-button} - (when on-cancel {:onPress on-cancel})) - {:text (or confirm-button-text (i18n/label :t/ok)) - :onPress on-accept - :style "default" - :accessibility-label :confirm-button})) + (concat + (vector (merge {:text (or cancel-button-text (i18n/label :t/cancel)) + :style "cancel" + :accessibility-label :cancel-button} + (when on-cancel {:onPress on-cancel})) + {:text (or confirm-button-text (i18n/label :t/ok)) + :onPress on-accept + :style "default" + :accessibility-label :confirm-button}) + (or extra-options nil))) #js {:cancelable false})) (re-frame/reg-fx diff --git a/translations/en.json b/translations/en.json index 5826b5d029..7fb76b11da 100644 --- a/translations/en.json +++ b/translations/en.json @@ -901,5 +901,9 @@ "sticker-market": "Sticker market", "you-dont-have-stickers": "You don’t have any stickers yet", "get-stickers": "Get Stickers", - "recently-used-stickers": "Recently used stickers will appear here" + "recently-used-stickers": "Recently used stickers will appear here", + "mailserver-retry": "Retry", + "mailserver-pick-another": "Pick another mailserver", + "mailserver-error-title": "Error connecting to mailserver", + "mailserver-error-content": "The mailserver you selected couldn't be reached." }