embed_view.ex (1974B)
- # Pleroma: A lightweight social networking server
- # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
- # SPDX-License-Identifier: AGPL-3.0-only
- defmodule Pleroma.Web.EmbedView do
- use Pleroma.Web, :view
- alias Calendar.Strftime
- alias Pleroma.Activity
- alias Pleroma.Emoji.Formatter
- alias Pleroma.Object
- alias Pleroma.User
- alias Pleroma.Web.Gettext
- alias Pleroma.Web.MediaProxy
- alias Pleroma.Web.Metadata.Utils
- alias Pleroma.Web.Router.Helpers
- use Phoenix.HTML
- defdelegate full_nickname(user), to: User
- @media_types ["image", "audio", "video"]
- defp fetch_media_type(%{"mediaType" => mediaType}) do
- Utils.fetch_media_type(@media_types, mediaType)
- end
- defp open_content? do
- Pleroma.Config.get(
- [:frontend_configurations, :collapse_message_with_subjects],
- true
- )
- end
- defp status_title(%Activity{object: %Object{data: %{"name" => name}}}) when is_binary(name),
- do: name
- defp status_title(%Activity{object: %Object{data: %{"summary" => summary}}})
- when is_binary(summary),
- do: summary
- defp status_title(_), do: nil
- defp activity_content(%Activity{object: %Object{data: %{"content" => content}}}) do
- content |> Pleroma.HTML.filter_tags() |> raw()
- end
- defp activity_content(_), do: nil
- defp activity_url(%User{local: true}, activity) do
- Helpers.o_status_url(Pleroma.Web.Endpoint, :notice, activity)
- end
- defp activity_url(%User{local: false}, %Activity{object: %Object{data: data}}) do
- data["url"] || data["external_url"] || data["id"]
- end
- defp attachments(%Activity{object: %Object{data: %{"attachment" => attachments}}}) do
- attachments
- end
- defp sensitive?(%Activity{object: %Object{data: %{"sensitive" => sensitive}}}) do
- sensitive
- end
- defp published(%Activity{object: %Object{data: %{"published" => published}}}) do
- published
- |> NaiveDateTime.from_iso8601!()
- |> Strftime.strftime!("%B %d, %Y, %l:%M %p")
- end
- end