diff --git a/src/cljs/auto_ap/views/pages/transactions.cljs b/src/cljs/auto_ap/views/pages/transactions.cljs index f0ad3520..36489a8c 100644 --- a/src/cljs/auto_ap/views/pages/transactions.cljs +++ b/src/cljs/auto_ap/views/pages/transactions.cljs @@ -37,6 +37,16 @@ (assoc edit-transaction :class "live-added") t)) ts)))))) + +(re-frame/reg-event-fx + ::manual-import-completed + (fn [{:keys [db]} [_ {:keys [imported errors]}]] + (println "MANUAL FINISHED") + {:dispatch [::params-change {}] + :db (-> db + (assoc-in [::notification :message] (str "Successfully imported " imported " transactions")) + (assoc-in [::notification :errors] errors))})) + (re-frame/reg-sub ::transaction-page (fn [db] @@ -208,9 +218,9 @@ [:li (:description-original transaction) "-" (:details error)])]]))) [:div.is-pulled-right [:div.buttons - [:button.button.is-danger {:on-click (dispatch-event [::manual/manual-yodlee-import])} + [:button.button.is-danger {:on-click (dispatch-event [::manual/opening])} "Manage Rules"] - [:button.button.is-danger {:on-click (dispatch-event [::manual/manual-yodlee-import])} + [:button.button.is-danger {:on-click (dispatch-event [::manual/opening])} "Manual Yodlee Import"]]])) [transaction-table {:id :transactions :params (re-frame/subscribe [::params]) @@ -218,7 +228,7 @@ :status (re-frame/subscribe [::subs/status]) :on-params-change (fn [params] (re-frame/dispatch [::params-change params]))}] - [manual/manual-yodlee-import-modal]])) + [manual/modal {:import-completed [::manual-import-completed ]}]])) {:component-will-mount #(re-frame/dispatch-sync [::params-change {}]) })) (defn transactions-page [] diff --git a/src/cljs/auto_ap/views/pages/transactions/manual.cljs b/src/cljs/auto_ap/views/pages/transactions/manual.cljs index 809f221f..08ffe5b9 100644 --- a/src/cljs/auto_ap/views/pages/transactions/manual.cljs +++ b/src/cljs/auto_ap/views/pages/transactions/manual.cljs @@ -6,46 +6,48 @@ [re-frame.core :as re-frame])) (re-frame/reg-event-fx - ::manual-yodlee-import + ::opening (fn [{:keys [db]} _] - {:dispatch [::events/modal-status ::manual-yodlee-import {:visible? true}] - :db (assoc-in db [::manual-yodlee-import] {:client-id (:id @(re-frame/subscribe [::subs/client])) - :data ""})})) + {:dispatch [::events/modal-status ::import {:visible? true}] + :db (assoc-in db [::import] {:client-id (:id @(re-frame/subscribe [::subs/client])) + :data ""})})) (re-frame/reg-sub - ::manual-yodlee-import + ::import (fn [db] - (-> db ::manual-yodlee-import))) + (-> db ::import))) (re-frame/reg-event-fx - ::manual-yodlee-import-completed - (fn [{:keys [db]} [_ {:keys [imported errors]}]] - (re-frame/dispatch [::params-change {}]) - {:dispatch [::events/modal-completed ::manual-yodlee-import] - :db (-> db - (assoc-in [::notification :message] (str "Successfully imported " imported " transactions")) - (assoc-in [::notification :errors] errors))})) + ::import-completed + (fn [{:keys [db]} [_ import-completed-event {:keys [imported errors] :as result}]] + {:dispatch-n [[::events/modal-completed ::import] + (conj import-completed-event result)]})) (re-frame/reg-event-fx - ::manual-yodlee-import-started - (fn [{:keys [db]} _] - (let [manual-yodlee-import (::manual-yodlee-import db)] + ::import-error + (fn [{:keys [db]} [_ result]] + {:dispatch [::events/modal-failed ::import "Import failed"]})) + +(re-frame/reg-event-fx + ::import-started + (fn [{:keys [db]} [_ import-completed-event]] + (let [import (::import db)] {:http {:token (:user db) :method :post - :body (pr-str manual-yodlee-import) + :body (pr-str import) :headers {"Content-Type" "application/edn"} :uri (str "/api/transactions/batch-upload") - :on-success [::manual-yodlee-import-completed] - :on-error [::manual-yodlee-import-error]}}))) + :on-success [::import-completed import-completed-event] + :on-error [::import-error]}}))) -(defn manual-yodlee-import-modal [] - (let [data @(re-frame/subscribe [::manual-yodlee-import]) - change-event [::events/change-form [::manual-yodlee-import]]] - [action-modal {:id ::manual-yodlee-import +(defn modal [{import-completed-event :import-completed}] + (let [data @(re-frame/subscribe [::import]) + change-event [::events/change-form [::import]]] + [action-modal {:id ::import :title "Manual Yodlee Import" :action-text "Import" - :save-event [::manual-yodlee-import-started]} + :save-event [::import-started import-completed-event]} [:div.field [:label.label "Yodlee manual import table"]