alias Phoenix.HTML
@parsers Pleroma.Config.get([:metadata, :providers], [])
+ def get_cached_tags(%{activity: activity, user: user} = params) do
+ # We don't need to use the both activity and a user since the object can't change it's content
+ key = "#{:erlang.term_to_binary(user)}#{activity.data["id"]}"
+
+ Cachex.fetch!(:metadata_cache, key, fn _key ->
+ {:commit, build_tags(params)}
+ end)
+ end
+
+ def get_cached_tags(%{user: user} = params) do
+ # I am unsure how well ETS works with big keys
+ key = :erlang.term_to_binary(user)
+
+ Cachex.fetch!(:metadata_cache, key, fn _key ->
+ {:commit, build_tags(params)}
+ end)
+ end
+
+ def get_cached_tags(params) do
+ key = :erlang.term_to_binary(params)
+
+ Cachex.fetch!(:metadata_cache, key, fn _key ->
+ {:commit, build_tags(params)}
+ end)
+ end
+
def build_tags(params) do
Enum.reduce(@parsers, "", fn parser, acc ->
rendered_html =