diff --git a/lib/federation/activity_stream/converter/event.ex b/lib/federation/activity_stream/converter/event.ex index c89aced1c..6328b56f6 100644 --- a/lib/federation/activity_stream/converter/event.ex +++ b/lib/federation/activity_stream/converter/event.ex @@ -8,6 +8,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do alias Mobilizon.Actors.Actor alias Mobilizon.Addresses.Address + alias Mobilizon.Events.Categories alias Mobilizon.Events.Event, as: EventModel alias Mobilizon.Medias.Media @@ -73,7 +74,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do medias: medias, begins_on: object["startTime"], ends_on: object["endTime"], - category: object["category"], + category: get_category(object["category"]), visibility: visibility, join_options: Map.get(object, "joinMode", "free"), local: is_local?(object["id"]), @@ -330,4 +331,15 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do _participant_count ), do: nil + + @spec get_category(String.t() | nil) :: String.t() + defp get_category(nil), do: "MEETING" + + defp get_category(category) when is_binary(category) do + if category in Enum.map(Categories.list(), &String.upcase(to_string(&1.id))) do + category + else + get_category(nil) + end + end end