handling errors
This commit is contained in:
@@ -33,18 +33,24 @@
|
||||
|
||||
(re-frame/reg-fx
|
||||
:http
|
||||
(fn [{:keys [method uri on-success body headers token]}]
|
||||
(fn [{:keys [method uri on-success on-error body headers token]}]
|
||||
(go
|
||||
(let [headers (if token
|
||||
(assoc headers "Authorization" (str "Token " token))
|
||||
headers)]
|
||||
(println headers)
|
||||
(->> (http/request {:method method
|
||||
:body body
|
||||
:headers headers
|
||||
:url uri})
|
||||
(<! )
|
||||
:body
|
||||
(dates->date-times)
|
||||
(conj on-success)
|
||||
(re-frame/dispatch))))))
|
||||
headers)
|
||||
response (<! (http/request {:method method
|
||||
:body body
|
||||
:headers headers
|
||||
:url uri}))]
|
||||
(if (>= (:status response) 400)
|
||||
(when on-error
|
||||
(->> response
|
||||
:body
|
||||
(dates->date-times)
|
||||
(conj on-error)
|
||||
(re-frame/dispatch)))
|
||||
(->> response
|
||||
:body
|
||||
(dates->date-times)
|
||||
(conj on-success)
|
||||
(re-frame/dispatch)))))))
|
||||
|
||||
@@ -32,13 +32,15 @@
|
||||
:body (pr-str edited-vendor)
|
||||
:headers {"Content-Type" "application/edn"}
|
||||
:uri (str "/api/vendors/" (::entity/id edited-vendor))
|
||||
:on-success [::save-complete]})
|
||||
:on-success [::save-complete]
|
||||
:on-error [::save-error]})
|
||||
(assoc fx :http {:method :post
|
||||
:token (:user db)
|
||||
:body (pr-str edited-vendor)
|
||||
:headers {"Content-Type" "application/edn"}
|
||||
:uri (str "/api/vendors")
|
||||
:on-success [::save-complete]}))))))
|
||||
:on-success [::save-complete]
|
||||
:on-error [::save-error]}))))))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::save-complete
|
||||
@@ -48,6 +50,13 @@
|
||||
(assoc-in [:admin :vendor] nil)
|
||||
(assoc-in [:vendors (::entity/id vendor)] vendor))))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::save-error
|
||||
(fn [db [_ vendor]]
|
||||
(-> db
|
||||
(assoc-in [:admin :vendor :error] true)
|
||||
(assoc-in [:admin :vendor :saving?] false))))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::change
|
||||
(fn [db [_ path value]]
|
||||
|
||||
@@ -90,6 +90,9 @@
|
||||
(if (::entity/id editing-vendor)
|
||||
(str "Edit " (or (::entity/name editing-vendor) "<vendor>"))
|
||||
(str "Add " (or (::entity/name editing-vendor) "<new vendor>")))]
|
||||
(when (:error editing-vendor)
|
||||
[:span.icon.has-text-danger
|
||||
[:i.fa.fa-exclamation-triangle]])
|
||||
[:button.delete {:on-click (fn [] (re-frame/dispatch [::events/edit nil]))}]]
|
||||
[:section.modal-card-body
|
||||
[horizontal-field
|
||||
@@ -208,23 +211,23 @@
|
||||
[horizontal-field
|
||||
[:label.label "Invoice Reminders"]
|
||||
[:div.control
|
||||
[:label.radio
|
||||
[bind-field
|
||||
[:input {:type "radio"
|
||||
:name "schedule"
|
||||
:value "Weekly"
|
||||
:field ::entity/invoice-reminder-schedule
|
||||
:subscription editing-vendor}]]
|
||||
[:label.radio
|
||||
[bind-field
|
||||
[:input {:type "radio"
|
||||
:name "schedule"
|
||||
:value "Weekly"
|
||||
:field ::entity/invoice-reminder-schedule
|
||||
:subscription editing-vendor}]]
|
||||
" Send weekly"]
|
||||
|
||||
" Send weekly"]
|
||||
[:label.radio
|
||||
[bind-field
|
||||
[:input {:type "radio"
|
||||
:name "schedule"
|
||||
:value "Never"
|
||||
:field ::entity/invoice-reminder-schedule
|
||||
:subscription editing-vendor}]]
|
||||
" Never"]]]
|
||||
[:label.radio
|
||||
[bind-field
|
||||
[:input {:type "radio"
|
||||
:name "schedule"
|
||||
:value "Never"
|
||||
:field ::entity/invoice-reminder-schedule
|
||||
:subscription editing-vendor}]]
|
||||
" Never"]]]
|
||||
|
||||
|
||||
(when (:saving? editing-vendor) [:div.is-overlay {:style {"backgroundColor" "rgba(150,150,150, 0.5)"}}])]
|
||||
|
||||
Reference in New Issue
Block a user