(ns auto-ap.views.pages.transactions.manual (:require [auto-ap.events :as events] [auto-ap.subs :as subs] [auto-ap.views.components.modal :refer [action-modal]] [auto-ap.views.utils :refer [bind-field]] [re-frame.core :as re-frame])) (re-frame/reg-event-fx ::opening (fn [{:keys [db]} _] {: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 ::import (fn [db] (-> db ::import))) (re-frame/reg-event-fx ::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 ::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 import) :headers {"Content-Type" "application/edn"} :uri (str "/api/transactions/batch-upload") :on-success [::import-completed import-completed-event] :on-error [::import-error]}}))) (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 [::import-started import-completed-event]} [:div.field [:label.label "Yodlee manual import table"] [:div.control [bind-field [:textarea.textarea {:field [:data] :event change-event :subscription data}]]]]]))