diff --git a/src/cljs/auto_ap/effects.cljs b/src/cljs/auto_ap/effects.cljs index 4b78087b..e3b42cfc 100644 --- a/src/cljs/auto_ap/effects.cljs +++ b/src/cljs/auto_ap/effects.cljs @@ -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}) - (date-times) - (conj on-success) - (re-frame/dispatch)))))) + headers) + response (= (: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))))))) diff --git a/src/cljs/auto_ap/events/admin/vendors.cljs b/src/cljs/auto_ap/events/admin/vendors.cljs index 9182623f..29b01a81 100644 --- a/src/cljs/auto_ap/events/admin/vendors.cljs +++ b/src/cljs/auto_ap/events/admin/vendors.cljs @@ -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]] diff --git a/src/cljs/auto_ap/views/pages/admin/vendors.cljs b/src/cljs/auto_ap/views/pages/admin/vendors.cljs index 122ce9b9..1441f45c 100644 --- a/src/cljs/auto_ap/views/pages/admin/vendors.cljs +++ b/src/cljs/auto_ap/views/pages/admin/vendors.cljs @@ -90,6 +90,9 @@ (if (::entity/id editing-vendor) (str "Edit " (or (::entity/name editing-vendor) "")) (str "Add " (or (::entity/name editing-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)"}}])]