Don't allow multiple pop ups to be shown
This commit makes sure that we don't display multiple pop ups when mailserver connection has failed. It also fixes the navigation to avoid being stuck on Profile tab. Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
This commit is contained in:
parent
7e069ed342
commit
b9f896f4e3
|
@ -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}
|
||||
|
|
|
@ -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])}]}]
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue