mirror of
https://framagit.org/framasoft/mobilizon.git
synced 2024-12-25 09:22:22 +00:00
Merge branch 'expose-memberCount-in-ap' into 'main'
Expose member count in AP data Closes #1057 See merge request framasoft/mobilizon!1188
This commit is contained in:
commit
884a69aef9
3 changed files with 20 additions and 3 deletions
|
@ -117,6 +117,10 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do
|
|||
"@id" => "mz:participantCount",
|
||||
"@type" => "sc:Integer"
|
||||
},
|
||||
"memberCount" => %{
|
||||
"@id" => "mz:memberCount",
|
||||
"@type" => "sc:Integer"
|
||||
},
|
||||
"isOnline" => %{
|
||||
"@type" => "sc:Boolean",
|
||||
"@id" => "mz:isOnline"
|
||||
|
|
|
@ -6,8 +6,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Actor do
|
|||
internal one, and back.
|
||||
"""
|
||||
|
||||
alias Mobilizon.Actors
|
||||
alias Mobilizon.Actors.Actor, as: ActorModel
|
||||
|
||||
alias Mobilizon.Addresses.Address
|
||||
alias Mobilizon.Federation.ActivityPub.Utils
|
||||
alias Mobilizon.Federation.ActivityStream.{Converter, Convertible}
|
||||
|
@ -154,8 +154,10 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Actor do
|
|||
end
|
||||
end
|
||||
|
||||
defp maybe_add_members(actor_data, %ActorModel{type: :Group, members_url: members_url}) do
|
||||
Map.put(actor_data, "members", members_url)
|
||||
defp maybe_add_members(actor_data, %ActorModel{type: :Group, members_url: members_url} = group) do
|
||||
actor_data
|
||||
|> Map.put("members", members_url)
|
||||
|> Map.put("memberCount", Actors.count_members_for_group(group))
|
||||
end
|
||||
|
||||
defp maybe_add_members(actor_data, %ActorModel{}), do: actor_data
|
||||
|
|
|
@ -890,6 +890,17 @@ defmodule Mobilizon.Actors do
|
|||
|> (&(&1 == 0)).()
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns the number of followers for a group
|
||||
"""
|
||||
@spec count_members_for_group(Actor.t()) :: integer()
|
||||
def count_members_for_group(%Actor{id: actor_id}) do
|
||||
actor_id
|
||||
|> members_for_group_query()
|
||||
# |> where([m], m.role in @member_roles)
|
||||
|> Repo.aggregate(:count)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Gets a single bot.
|
||||
Raises `Ecto.NoResultsError` if the bot does not exist.
|
||||
|
|
Loading…
Reference in a new issue