Retry mailserver request when initial request fails
If the initial request fails we immediately show the error pop-up. This PR changes the behavior so that it is retried just like any other request. If 3 requests in a row fail, we show the error pop up if the user has specifically set a mailserver, otherwise is changed automatically. Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
This commit is contained in:
parent
ceebbc8795
commit
c56ef18ca9
|
@ -371,6 +371,11 @@
|
||||||
(fn [cofx [_ _ url]]
|
(fn [cofx [_ _ url]]
|
||||||
(mailserver/set-url-from-qr cofx url)))
|
(mailserver/set-url-from-qr cofx url)))
|
||||||
|
|
||||||
|
(handlers/register-handler-fx
|
||||||
|
:mailserver.callback/resend-request
|
||||||
|
(fn [cofx [_ request]]
|
||||||
|
(mailserver/resend-request cofx request)))
|
||||||
|
|
||||||
(handlers/register-handler-fx
|
(handlers/register-handler-fx
|
||||||
:mailserver.ui/connect-pressed
|
:mailserver.ui/connect-pressed
|
||||||
(fn [cofx [_ mailserver-id]]
|
(fn [cofx [_ mailserver-id]]
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
(def request-timeout 30)
|
(def request-timeout 30)
|
||||||
(def min-limit 200)
|
(def min-limit 200)
|
||||||
(def max-limit 2000)
|
(def max-limit 2000)
|
||||||
|
(def backoff-interval-ms 3000)
|
||||||
(def default-limit max-limit)
|
(def default-limit max-limit)
|
||||||
(def connection-timeout
|
(def connection-timeout
|
||||||
"Time after which mailserver connection is considered to have failed"
|
"Time after which mailserver connection is considered to have failed"
|
||||||
|
@ -290,7 +291,8 @@
|
||||||
(log/info "mailserver: messages request success for topic " topics "from" from "to" to)
|
(log/info "mailserver: messages request success for topic " topics "from" from "to" to)
|
||||||
(do
|
(do
|
||||||
(log/error "mailserver: messages request error for topic " topics ": " error)
|
(log/error "mailserver: messages request error for topic " topics ": " error)
|
||||||
(re-frame/dispatch [:mailserver.callback/request-error (i18n/label :t/mailserver-request-error-title)])))))))
|
(utils/set-timeout #(re-frame/dispatch [:mailserver.callback/resend-request {:request-id "failed-request"}])
|
||||||
|
backoff-interval-ms)))))))
|
||||||
|
|
||||||
(re-frame/reg-fx
|
(re-frame/reg-fx
|
||||||
:mailserver/request-messages
|
:mailserver/request-messages
|
||||||
|
@ -572,8 +574,9 @@
|
||||||
|
|
||||||
(fx/defn resend-request
|
(fx/defn resend-request
|
||||||
[{:keys [db] :as cofx} {:keys [request-id]}]
|
[{:keys [db] :as cofx} {:keys [request-id]}]
|
||||||
(if (<= maximum-number-of-attempts
|
(if (and (:mailserver/current-request db)
|
||||||
(get-in db [:mailserver/current-request :attempts]))
|
(<= maximum-number-of-attempts
|
||||||
|
(get-in db [:mailserver/current-request :attempts])))
|
||||||
(fx/merge cofx
|
(fx/merge cofx
|
||||||
{:db (update db :mailserver/current-request dissoc :attempts)}
|
{:db (update db :mailserver/current-request dissoc :attempts)}
|
||||||
(change-mailserver))
|
(change-mailserver))
|
||||||
|
|
Loading…
Reference in New Issue