60 lines
2.0 KiB
Clojure
60 lines
2.0 KiB
Clojure
(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}]]]]]))
|
|
|