mirror of
https://github.com/penpot/penpot.git
synced 2025-04-30 00:36:19 +02:00
🐛 Fix incorrect topic sending on internal srepl notify helper
This commit is contained in:
parent
5d600c6715
commit
78919df886
1 changed files with 78 additions and 72 deletions
|
@ -210,99 +210,105 @@
|
||||||
The message can be a free text or a preconfigured one.
|
The message can be a free text or a preconfigured one.
|
||||||
|
|
||||||
The destination can be: all, profile-id, team-id, or a coll of them."
|
The destination can be: all, profile-id, team-id, or a coll of them."
|
||||||
[{:keys [::mbus/msgbus ::db/pool]} & {:keys [dest code message level]
|
[& {:keys [dest code message level]
|
||||||
:or {code :generic level :info}
|
:or {code :generic level :info}
|
||||||
:as params}]
|
:as params}]
|
||||||
|
|
||||||
(when-not (contains? #{:success :error :info :warning} level)
|
(when-not (contains? #{:success :error :info :warning} level)
|
||||||
(ex/raise :type :assertion
|
(ex/raise :type :assertion
|
||||||
:code :incorrect-level
|
:code :incorrect-level
|
||||||
:hint (str "level '" level "' not supported")))
|
:hint (str "level '" level "' not supported")))
|
||||||
|
|
||||||
(letfn [(send [dest]
|
(let [{:keys [::mbus/msgbus ::db/pool]} main/system
|
||||||
(l/inf :hint "sending notification" :dest (str dest))
|
|
||||||
(let [message {:type :notification
|
|
||||||
:code code
|
|
||||||
:level level
|
|
||||||
:version (:full cf/version)
|
|
||||||
:subs-id dest
|
|
||||||
:message message}
|
|
||||||
message (->> (dissoc params :dest :code :message :level)
|
|
||||||
(merge message))]
|
|
||||||
(mbus/pub! msgbus
|
|
||||||
:topic (str dest)
|
|
||||||
:message message)))
|
|
||||||
|
|
||||||
(resolve-profile [email]
|
send
|
||||||
(some-> (db/get* pool :profile {:email (str/lower email)} {:columns [:id]}) :id vector))
|
(fn [dest]
|
||||||
|
(l/inf :hint "sending notification" :dest (str dest))
|
||||||
|
(let [message {:type :notification
|
||||||
|
:code code
|
||||||
|
:level level
|
||||||
|
:version (:full cf/version)
|
||||||
|
:subs-id dest
|
||||||
|
:message message}
|
||||||
|
message (->> (dissoc params :dest :code :message :level)
|
||||||
|
(merge message))]
|
||||||
|
(mbus/pub! msgbus
|
||||||
|
:topic dest
|
||||||
|
:message message)))
|
||||||
|
|
||||||
(resolve-team [team-id]
|
resolve-profile
|
||||||
(->> (db/query pool :team-profile-rel
|
(fn [email]
|
||||||
{:team-id team-id}
|
(some-> (db/get* pool :profile {:email (str/lower email)} {:columns [:id]}) :id vector))
|
||||||
{:columns [:profile-id]})
|
|
||||||
(map :profile-id)))
|
|
||||||
|
|
||||||
(resolve-dest [dest]
|
resolve-team
|
||||||
(cond
|
(fn [team-id]
|
||||||
(= :all dest)
|
(->> (db/query pool :team-profile-rel
|
||||||
[uuid/zero]
|
{:team-id team-id}
|
||||||
|
{:columns [:profile-id]})
|
||||||
|
(map :profile-id)))
|
||||||
|
|
||||||
(uuid? dest)
|
resolve-dest
|
||||||
[dest]
|
(fn resolve-dest [dest]
|
||||||
|
(cond
|
||||||
|
(= :all dest)
|
||||||
|
[uuid/zero]
|
||||||
|
|
||||||
(string? dest)
|
(uuid? dest)
|
||||||
(some-> dest h/parse-uuid resolve-dest)
|
[dest]
|
||||||
|
|
||||||
(nil? dest)
|
(string? dest)
|
||||||
(resolve-dest uuid/zero)
|
(some-> dest h/parse-uuid resolve-dest)
|
||||||
|
|
||||||
(map? dest)
|
(nil? dest)
|
||||||
(sequence (comp
|
[uuid/zero]
|
||||||
(map vec)
|
|
||||||
(mapcat resolve-dest))
|
|
||||||
dest)
|
|
||||||
|
|
||||||
(and (vector? dest)
|
(map? dest)
|
||||||
(every? vector? dest))
|
(sequence (comp
|
||||||
(sequence (comp
|
(map vec)
|
||||||
(map vec)
|
(mapcat resolve-dest))
|
||||||
(mapcat resolve-dest))
|
dest)
|
||||||
dest)
|
|
||||||
|
|
||||||
(and (vector? dest)
|
(and (vector? dest)
|
||||||
(keyword? (first dest)))
|
(every? vector? dest))
|
||||||
(let [[op param] dest]
|
(sequence (comp
|
||||||
|
(map vec)
|
||||||
|
(mapcat resolve-dest))
|
||||||
|
dest)
|
||||||
|
|
||||||
|
(and (vector? dest)
|
||||||
|
(keyword? (first dest)))
|
||||||
|
(let [[op param] dest]
|
||||||
|
(cond
|
||||||
|
(= op :email)
|
||||||
(cond
|
(cond
|
||||||
(= op :email)
|
(and (coll? param)
|
||||||
(cond
|
(every? string? param))
|
||||||
(and (coll? param)
|
(sequence (comp
|
||||||
(every? string? param))
|
(keep resolve-profile)
|
||||||
(sequence (comp
|
(mapcat identity))
|
||||||
(keep resolve-profile)
|
param)
|
||||||
(mapcat identity))
|
|
||||||
param)
|
|
||||||
|
|
||||||
(string? param)
|
(string? param)
|
||||||
(resolve-profile param))
|
(resolve-profile param))
|
||||||
|
|
||||||
(= op :team-id)
|
(= op :team-id)
|
||||||
(cond
|
(cond
|
||||||
(coll? param)
|
(coll? param)
|
||||||
(sequence (comp
|
(sequence (comp
|
||||||
(mapcat resolve-team)
|
(mapcat resolve-team)
|
||||||
(keep h/parse-uuid))
|
(keep h/parse-uuid))
|
||||||
param)
|
param)
|
||||||
|
|
||||||
(uuid? param)
|
(uuid? param)
|
||||||
(resolve-team param)
|
(resolve-team param)
|
||||||
|
|
||||||
(string? param)
|
(string? param)
|
||||||
(some-> param h/parse-uuid resolve-team))
|
(some-> param h/parse-uuid resolve-team))
|
||||||
|
|
||||||
(= op :profile-id)
|
(= op :profile-id)
|
||||||
(if (coll? param)
|
(if (coll? param)
|
||||||
(sequence (keep h/parse-uuid) param)
|
(sequence (keep h/parse-uuid) param)
|
||||||
(resolve-dest param))))))]
|
(resolve-dest param))))))]
|
||||||
|
|
||||||
(->> (resolve-dest dest)
|
(->> (resolve-dest dest)
|
||||||
(filter some?)
|
(filter some?)
|
||||||
|
|
Loading…
Add table
Reference in a new issue