;; next/genesis/audience/followers.sx
;;
;; Followers audience: an actor is a member iff they appear in
;; the audience-owner's :followers set in the audience-graph
;; projection. Federation (m2) wires this to peer delivery.

(DefineAudience
  :name "Followers"
  :doc "Followers-of-owner predicate. Looks up the\n        audience-graph projection's :followers list for the\n        audience owner and tests membership."
  :member-of (fn
    (actor audience)
    (member?
      actor
      (-> (get-projection :audience-graph) (-> audience :owner) :followers))))
