Should force the user to select a client

This commit is contained in:
2023-09-27 15:58:50 -07:00
parent be13bbbb4d
commit 673dbd0807
4 changed files with 160 additions and 25 deletions

View File

@@ -1835,16 +1835,16 @@ input:checked + .toggle-bg {
background-color: rgb(255 154 154 / var(--tw-bg-opacity)); background-color: rgb(255 154 154 / var(--tw-bg-opacity));
} }
.bg-red-300 {
--tw-bg-opacity: 1;
background-color: rgb(255 104 104 / var(--tw-bg-opacity));
}
.bg-red-50 { .bg-red-50 {
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(255 230 230 / var(--tw-bg-opacity)); background-color: rgb(255 230 230 / var(--tw-bg-opacity));
} }
.bg-red-500 {
--tw-bg-opacity: 1;
background-color: rgb(255 3 3 / var(--tw-bg-opacity));
}
.bg-white { .bg-white {
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity)); background-color: rgb(255 255 255 / var(--tw-bg-opacity));
@@ -1859,9 +1859,49 @@ input:checked + .toggle-bg {
background-color: rgb(253 246 178 / var(--tw-bg-opacity)); background-color: rgb(253 246 178 / var(--tw-bg-opacity));
} }
.bg-red-300 { .bg-blue-300 {
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(255 104 104 / var(--tw-bg-opacity)); background-color: rgb(102 196 242 / var(--tw-bg-opacity));
}
.bg-blue-400 {
--tw-bg-opacity: 1;
background-color: rgb(51 176 238 / var(--tw-bg-opacity));
}
.bg-blue-600 {
--tw-bg-opacity: 1;
background-color: rgb(0 125 187 / var(--tw-bg-opacity));
}
.bg-blue-800 {
--tw-bg-opacity: 1;
background-color: rgb(0 62 94 / var(--tw-bg-opacity));
}
.bg-green-300 {
--tw-bg-opacity: 1;
background-color: rgb(175 211 130 / var(--tw-bg-opacity));
}
.bg-green-400 {
--tw-bg-opacity: 1;
background-color: rgb(148 196 88 / var(--tw-bg-opacity));
}
.bg-green-600 {
--tw-bg-opacity: 1;
background-color: rgb(97 145 37 / var(--tw-bg-opacity));
}
.bg-green-700 {
--tw-bg-opacity: 1;
background-color: rgb(73 109 28 / var(--tw-bg-opacity));
}
.bg-green-800 {
--tw-bg-opacity: 1;
background-color: rgb(48 72 18 / var(--tw-bg-opacity));
} }
.bg-opacity-50 { .bg-opacity-50 {

View File

@@ -27,7 +27,7 @@
(defn fastlink-dialog [{:keys [session]}] (defn fastlink-dialog [{:keys [client]}]
(html-response (html-response
(com/modal (com/modal
{} {}
@@ -41,14 +41,19 @@
(format " (format "
fastlink.open({fastLinkURL: '%s', fastlink.open({fastLinkURL: '%s',
accessToken: '%s', accessToken: '%s',
params: {'configName': 'Aggregation'}}, params: {'configName': 'Aggregation'},
onError: function(e) {
console.log(e);
htmx.trigger(\"#yodlee-table\", \"notification\", {value: \"Yodlee returned the following error: '\" + e.message + \"'.\\n\\nYou may want to refresh your browser and try again.\"});
setTimeout(hideModal, 300);
}},
'fa-spot'); 'fa-spot');
" (:yodlee2-fastlink env) (yodlee/get-access-token (:client/code (:client session)))))] " (:yodlee2-fastlink env) (yodlee/get-access-token (:client/code client))))]
] ]
[:div])))) [:div]))))
(defn reauthenticate [{:keys [session form-params]}] (defn reauthenticate [{:keys [form-params]}]
(html-response (html-response
(com/modal (com/modal
{} {}
@@ -92,14 +97,21 @@ fastlink.open({fastLinkURL: '%s',
:title "Yodlee Accounts" :title "Yodlee Accounts"
:entity-name "Yodlee accounts" :entity-name "Yodlee accounts"
:route :company-yodlee-table :route :company-yodlee-table
:action-buttons (fn [user _] :action-buttons (fn [user args]
[(com/button {:color :primary [[:div.flex.flex-col.flex-shrink
:on-click "openFastlink()" [:div.flex-shrink
:hx-get (bidi/path-for ssr-routes/only-routes (com/button {:color :primary
:company-yodlee-fastlink-dialog) :on-click "openFastlink()"
:hx-target "#modal-holder"} :disabled (if (:client args)
(com/button-icon {} svg/refresh) false
"Link new account")]) true)
:hx-get (bidi/path-for ssr-routes/only-routes
:company-yodlee-fastlink-dialog)
:hx-target "#modal-holder"}
(com/button-icon {} svg/refresh)
"Link new account")]
(when-not (:client args)
[:div.text-xs "Note: please select a specific customer to link a new account."])]])
:row-buttons (fn [user e] :row-buttons (fn [user e]
[ [
(com/button {:hx-put (bidi/path-for ssr-routes/only-routes (com/button {:hx-put (bidi/path-for ssr-routes/only-routes

View File

@@ -4,19 +4,99 @@
(defn button-icon- [_ i] (defn button-icon- [_ i]
[:div.h-4.w-4 i]) [:div.h-4.w-4 i])
(defn bg-colors [color disabled]
(let [base-color (cond (= :primary color)
"green"
(= :secondary color)
"blue"
(nil? color)
"white"
:else
color)
disabled-weight (when disabled 400)]
(format " bg-%s-%d hover:bg-%s-%d focus:ring-%s-%d dark:bg-%s-%d dark:hover:bg-%s-%d "
base-color
(or disabled-weight 500)
base-color
(or disabled-weight 600)
base-color
(or disabled-weight 200)
base-color
(or disabled-weight 600)
base-color
(or disabled-weight 700)
)))
(defn dark-color-weight [disabled]
(if disabled
400
600))
(defn hover-color-weight [disabled]
(if disabled
400
600))
(for [color ["green" "blue" "white"]
weight (range 100 900 100)]
(str "bg-" color "-" weight))
;;ensuring these colors show up
;; => ("bg-green-100"
;; "bg-green-200"
;; "bg-green-300"
;; "bg-green-400"
;; "bg-green-500"
;; "bg-green-600"
;; "bg-green-700"
;; "bg-green-800"
;; "bg-blue-100"
;; "bg-blue-200"
;; "bg-blue-300"
;; "bg-blue-400"
;; "bg-blue-500"
;; "bg-blue-600"
;; "bg-blue-700"
;; "bg-blue-800"
;; "bg-white-100"
;; "bg-white-200"
;; "bg-white-300"
;; "bg-white-400"
;; "bg-white-500"
;; "bg-white-600"
;; "bg-white-700"
;; "bg-white-800")
(defn button- [params & children] (defn button- [params & children]
[:button (update params [:button (update params
:class #(cond-> % :class #(cond-> %
true (str " focus:ring-4 font-bold rounded-lg text-xs p-3 text-center mr-2 inline-flex items-center hover:scale-105 transition duration-100 justify-center") true (str " focus:ring-4 font-bold rounded-lg text-xs p-3 text-center mr-2 inline-flex items-center justify-center"
(= :secondary (:color params)) (str " text-white bg-blue-500 hover:bg-blue-600 focus:ring-blue-300 dark:bg-blue-600 dark:hover:bg-blue-700") (bg-colors (:color params) (:disabled params)))
(= :primary (:color params)) (str " text-white bg-green-500 hover:bg-green-600 focus:ring-green-300 dark:bg-green-600 dark:hover:bg-green-700 ")
(not (:disabled params))
(str " hover:scale-105 transition duration-100")
(:disabled params)
(str " cursor-not-allowed")
(not (nil? (:color params)))
(str " text-white ")
(nil? (:color params)) (nil? (:color params))
(str " bg-white dark:bg-gray-600 border-gray-300 dark:border-gray-700 text-gray-500 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-100 font-medium border border-gray-300 dark:border-gray-700"))) (str " bg-white dark:bg-gray-600 border-gray-300 dark:border-gray-700 text-gray-500 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-100 font-medium border border-gray-300 dark:border-gray-700")))
[:div.htmx-indicator.flex.items-center [:div.htmx-indicator.flex.items-center
(svg/spinner {:class "inline w-4 h-4 text-white"}) (svg/spinner {:class "inline w-4 h-4 text-white"})
[:div.ml-3 "Loading..."]] [:div.ml-3 "Loading..."]]
(into [:div.htmx-indicator-hidden.inline-flex.gap-2.items-center.justify-center] children)]) (into [:div.htmx-indicator-hidden.inline-flex.gap-2.items-center.justify-center] children)])
;; => #'auto-ap.ssr.components.buttons/button-;; => #'auto-ap.ssr.components.buttons/button-
(defn icon-button- [params & children] (defn icon-button- [params & children]
(into (into
[:button [:button

View File

@@ -14,7 +14,8 @@
[datomic.api :as dc] [datomic.api :as dc]
[auto-ap.datomic :refer [conn]] [auto-ap.datomic :refer [conn]]
[auto-ap.datomic.clients :as d-clients] [auto-ap.datomic.clients :as d-clients]
[clojure.string :as str])) [clojure.string :as str]
[auto-ap.logging :as alog]))
;; switch all of this to use tokens instead of passing around client codes, particularly because the codes ;; switch all of this to use tokens instead of passing around client codes, particularly because the codes
;; need to be tweaked for repeats ;; need to be tweaked for repeats
(defn client-code->login [client-code] (defn client-code->login [client-code]
@@ -216,10 +217,12 @@
(defn get-access-token [client-code] (defn get-access-token [client-code]
(try (try
(alog/info ::getting-access-token :client client-code)
(let [cob-session (login-user (client-code->login client-code))] (let [cob-session (login-user (client-code->login client-code))]
(alog/info ::got-cob-session :cob-ession cob-session)
cob-session) cob-session)
(catch Exception e (catch Exception e
(log/error e) (alog/error ::cant-get-access-token :exception e)
(throw e)))) (throw e))))
#_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]} #_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]}