🐛 Fix exception on user-feedback rpc method

And normalizes configuration parameters
This commit is contained in:
Andrey Antukh 2024-11-25 09:28:06 +01:00
parent 19b9b3cbd9
commit 9b71e04e1c
2 changed files with 13 additions and 13 deletions

View file

@ -226,8 +226,8 @@
[:priority {:optional true} [:enum :high :low]] [:priority {:optional true} [:enum :high :low]]
[:extra-data {:optional true} ::sm/text]]) [:extra-data {:optional true} ::sm/text]])
(def ^:private valid-context? (def ^:private check-context
(sm/validator schema:context)) (sm/check-fn schema:context))
(defn template-factory (defn template-factory
[& {:keys [id schema]}] [& {:keys [id schema]}]
@ -236,10 +236,8 @@
(sm/check-fn schema) (sm/check-fn schema)
(constantly nil))] (constantly nil))]
(fn [context] (fn [context]
(assert (valid-context? context) "expected a valid context") (let [context (-> context check-context check-fn)
(check-fn context) email (build-email-template id context)]
(let [email (build-email-template id context)]
(when-not email (when-not email
(ex/raise :type :internal (ex/raise :type :internal
:code :email-template-does-not-exists :code :email-template-does-not-exists
@ -271,7 +269,7 @@
"Schedule an already defined email to be sent using asynchronously "Schedule an already defined email to be sent using asynchronously
using worker task." using worker task."
[{:keys [::conn ::factory] :as context}] [{:keys [::conn ::factory] :as context}]
(assert (db/connection? conn) "expected a valid database connection") (assert (db/connectable? conn) "expected a valid database connection or pool")
(let [email (if factory (let [email (if factory
(factory context) (factory context)
@ -348,7 +346,7 @@
[:subject ::sm/text] [:subject ::sm/text]
[:content ::sm/text]]) [:content ::sm/text]])
(def feedback (def user-feedback
"A profile feedback email." "A profile feedback email."
(template-factory (template-factory
:id ::feedback :id ::feedback

View file

@ -17,7 +17,7 @@
[app.rpc.doc :as-alias doc] [app.rpc.doc :as-alias doc]
[app.util.services :as sv])) [app.util.services :as sv]))
(declare ^:private send-feedback!) (declare ^:private send-user-feedback!)
(def ^:private schema:send-user-feedback (def ^:private schema:send-user-feedback
[:map {:title "send-user-feedback"} [:map {:title "send-user-feedback"}
@ -34,14 +34,16 @@
:hint "feedback not enabled")) :hint "feedback not enabled"))
(let [profile (profile/get-profile pool profile-id)] (let [profile (profile/get-profile pool profile-id)]
(send-feedback! pool profile params) (send-user-feedback! pool profile params)
nil)) nil))
(defn- send-feedback! (defn- send-user-feedback!
[pool profile params] [pool profile params]
(let [dest (cf/get :feedback-destination)] (let [dest (or (cf/get :user-feedback-destination)
;; LEGACY
(cf/get :feedback-destination))]
(eml/send! {::eml/conn pool (eml/send! {::eml/conn pool
::eml/factory eml/feedback ::eml/factory eml/user-feedback
:from dest :from dest
:to dest :to dest
:profile profile :profile profile