handling errors

This commit is contained in:
Bryce Covert
2018-04-09 14:46:10 -07:00
parent d69b1f2b81
commit 3da61b0057
3 changed files with 48 additions and 30 deletions

View File

@@ -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)))))))

View File

@@ -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]]

View File

@@ -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)"}}])]