diff --git a/src/cljs/auto_ap/views/pages/admin/yodlee.cljs b/src/cljs/auto_ap/views/pages/admin/yodlee.cljs index fd929e06..ad95a5f4 100644 --- a/src/cljs/auto_ap/views/pages/admin/yodlee.cljs +++ b/src/cljs/auto_ap/views/pages/admin/yodlee.cljs @@ -57,6 +57,18 @@ :on-success [::got-accounts] :on-error [::save-error]}})) +(re-frame/reg-event-fx + ::kicked + (fn [{:keys [db]} [_ id state]] + {:db (update-in db [::yodlee :accounts] + (fn [as] + (map (fn [a] + (if (= (:id a) id) + (assoc a :status state) + a)) + as))) + })) + (re-frame/reg-event-fx ::kick @@ -66,8 +78,8 @@ :method :post :headers {"Content-Type" "application/edn"} :uri (str "/api/yodlee/accounts/" id) - :on-success [::mounted] - :on-error [::save-error]}})) + :on-success [::kicked id :kicking] + :on-error [::kicked id :errored]}})) (re-frame/reg-event-fx ::got-accounts @@ -121,10 +133,11 @@ [:th "Account Number"] [:th "Yodlee Account Number"] [:th "Yodlee Last updated"] - [:th "Yodlee Status"]]] + [:th "Yodlee Status"] + [:th]]] (if @(re-frame/subscribe [::accounts-loading?]) - [:tr [:td {:col-span "3"} "Loading..."] + [:tr [:td {:col-span "6"} "Loading..."] ] (for [account @(re-frame/subscribe [::accounts])] [:tr @@ -133,8 +146,15 @@ [:td (:id account)] [:td (str/join ", " (map :lastUpdated (:dataset account)))] [:td (str/join ", " (map :additionalStatus (:dataset account)))] - [:td [:button.button.is-success {:on-click (dispatch-event [::kick (:id account)] )} "Kick." ]] - ]))]]) + [:td + (cond (= (:status account) :kicking) + [:button.button.is-success.is-loading {:disabled "disabled"} "Kick."] + + (= (:status account) :error) + [:button.button.is-error.is-loading {:disabled "disabled"} "Error."] + + :else + [:button.button.is-success {:on-click (dispatch-event [::kick (:id account)] )} "Kick." ])]]))]]) (defn admin-yodlee-page []