diff --git a/src/status_im/mailserver/core.cljs b/src/status_im/mailserver/core.cljs index 6529e0c166..216796f99a 100644 --- a/src/status_im/mailserver/core.cljs +++ b/src/status_im/mailserver/core.cljs @@ -518,6 +518,30 @@ (connect-to-mailserver) (disconnect-from-mailserver)))) +(defonce showing-connection-error-popup? (atom false)) + +(defn show-connection-error! [db current-fleet preferred-mailserver] + (reset! showing-connection-error-popup? true) + (assoc db :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-cancel #(do + (reset! showing-connection-error-popup? false) + (re-frame/dispatch [:mailserver.ui/dismiss-connection-error true])) + :on-accept #(do + (reset! showing-connection-error-popup? false) + (re-frame/dispatch [:mailserver.ui/dismiss-connection-error true]) + (re-frame/dispatch [:navigate-to :profile-stack {:screen :offline-messaging-settings}])) + :extra-options [{:text (i18n/label :t/mailserver-retry) + :onPress #(do + (reset! showing-connection-error-popup? false) + (re-frame/dispatch + [:mailserver.ui/connect-confirmed + current-fleet + preferred-mailserver])) + :style "default"}]})) + (fx/defn change-mailserver "mark mailserver status as `:error` if custom mailserver is used otherwise try to reconnect to another mailserver" @@ -532,22 +556,9 @@ (let [error-dismissed? (connection-error-dismissed db) current-fleet (node/current-fleet-key db)] ;; Error connecting to the mail server - {:db - (update-mailserver-state db :error) - :ui/show-confirmation - (when-not error-dismissed? - {:title (i18n/label :t/mailserver-error-title) - :content (i18n/label :t/mailserver-error-content) - :confirm-button-text (i18n/label :t/mailserver-pick-another) - :on-cancel #(re-frame/dispatch [:mailserver.ui/dismiss-connection-error true]) - :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"}]})}) + (cond-> {:db (update-mailserver-state db :error)} + (not (or error-dismissed? @showing-connection-error-popup?)) + (show-connection-error! current-fleet preferred-mailserver))) (let [{:keys [address]} (fetch-current db)] (fx/merge cofx {:mailserver/remove-peer address} diff --git a/src/status_im/ui/screens/offline_messaging_settings/views.cljs b/src/status_im/ui/screens/offline_messaging_settings/views.cljs index a20b980312..94ef044d29 100644 --- a/src/status_im/ui/screens/offline_messaging_settings/views.cljs +++ b/src/status_im/ui/screens/offline_messaging_settings/views.cljs @@ -53,6 +53,8 @@ [react/view {:style styles/wrapper} [topbar/topbar {:title (i18n/label :t/history-nodes) + ;; Navigate to profile as we might be coming from home to this view + :navigation {:on-press #(re-frame/dispatch [:navigate-to :profile-stack {:screen :sync-settings}])} :right-accessories [{:icon :main-icons/add-circle :on-press #(re-frame/dispatch [:mailserver.ui/add-pressed])}]}] diff --git a/src/status_im/ui/screens/sync_settings/views.cljs b/src/status_im/ui/screens/sync_settings/views.cljs index d637187eaa..e7490f22e8 100644 --- a/src/status_im/ui/screens/sync_settings/views.cljs +++ b/src/status_im/ui/screens/sync_settings/views.cljs @@ -14,7 +14,8 @@ current-fleet [:fleets/current-fleet] mailservers [:mailserver/mailservers]] [react/view {:style {:flex 1 :background-color colors/white}} - [topbar/topbar {:title (i18n/label :t/sync-settings)}] + [topbar/topbar {:title (i18n/label :t/sync-settings) + :navigation {:on-press #(re-frame/dispatch [:navigate-to :profile-stack {:screen :my-profile}])}}] [react/scroll-view [quo/list-header (i18n/label :t/data-syncing)] [quo/list-item {:size :small