diff --git a/lib/pleroma/web/static_fe/activity_representer.ex b/lib/pleroma/web/static_fe/activity_representer.ex
index 9bee732d5..7b7e1730c 100644
--- a/lib/pleroma/web/static_fe/activity_representer.ex
+++ b/lib/pleroma/web/static_fe/activity_representer.ex
@@ -19,6 +19,8 @@ defmodule Pleroma.Web.StaticFE.ActivityRepresenter do
|> set_content(object)
|> set_link(activity.id)
|> set_published(object)
+ |> set_sensitive(object)
+ |> set_attachment(object.data["attachment"])
|> set_attachments(object)
end
@@ -39,17 +41,23 @@ defmodule Pleroma.Web.StaticFE.ActivityRepresenter do
defp set_content(data, _), do: Map.put(data, :content, nil)
+ defp set_attachment(data, attachment), do: Map.put(data, :attachment, attachment)
+
defp set_link(data, activity_id),
do: Map.put(data, :link, Helpers.o_status_url(Pleroma.Web.Endpoint, :notice, activity_id))
defp set_published(data, %Object{data: %{"published" => published}}),
do: Map.put(data, :published, published)
+ defp set_sensitive(data, %Object{data: %{"sensitive" => sensitive}}),
+ do: Map.put(data, :sensitive, sensitive)
+
# TODO: attachments
defp set_attachments(data, _), do: Map.put(data, :attachments, [])
def represent(activity_id) do
- with %Activity{data: %{"type" => "Create"}} = activity <- Activity.get_by_id(activity_id),
+ with %Activity{data: %{"type" => "Create"}} = activity <-
+ Activity.get_by_id_with_object(activity_id),
true <- Visibility.is_public?(activity),
{:ok, %User{} = user} <- User.get_or_fetch(activity.data["actor"]) do
{:ok, prepare_activity(user, activity)}
diff --git a/lib/pleroma/web/static_fe/static_fe_view.ex b/lib/pleroma/web/static_fe/static_fe_view.ex
index ba67de835..2b3b968d3 100644
--- a/lib/pleroma/web/static_fe/static_fe_view.ex
+++ b/lib/pleroma/web/static_fe/static_fe_view.ex
@@ -8,10 +8,13 @@ defmodule Pleroma.Web.StaticFE.StaticFEView do
alias Pleroma.User
alias Pleroma.Web.MediaProxy
alias Pleroma.Formatter
+ alias Pleroma.Web.Metadata.Utils
alias Pleroma.Web.Router.Helpers
import Phoenix.HTML
+ @media_types ["image", "audio", "video"]
+
def emoji_for_user(%User{} = user) do
(user.source_data["tag"] || [])
|> Enum.filter(fn %{"type" => t} -> t == "Emoji" end)
@@ -19,4 +22,8 @@ defmodule Pleroma.Web.StaticFE.StaticFEView do
{String.trim(name, ":"), url}
end)
end
+
+ def fetch_media_type(url) do
+ Utils.fetch_media_type(@media_types, url["mediaType"])
+ end
end
diff --git a/lib/pleroma/web/templates/layout/static_fe.html.eex b/lib/pleroma/web/templates/layout/static_fe.html.eex
index 7ce9ead90..c1fbd89cd 100644
--- a/lib/pleroma/web/templates/layout/static_fe.html.eex
+++ b/lib/pleroma/web/templates/layout/static_fe.html.eex
@@ -36,6 +36,11 @@
margin-right: 4px;
}
+ .activity-content img, video {
+ max-width: 800px;
+ max-height: 800px;
+ }
+
a {
color: white;
}
diff --git a/lib/pleroma/web/templates/static_fe/static_fe/_attachment.html.eex b/lib/pleroma/web/templates/static_fe/static_fe/_attachment.html.eex
new file mode 100644
index 000000000..7e04e9550
--- /dev/null
+++ b/lib/pleroma/web/templates/static_fe/static_fe/_attachment.html.eex
@@ -0,0 +1,8 @@
+<%= case @mediaType do %>
+<% "audio" -> %>
+
+<% "video" -> %>
+
+<% _ -> %>
+
+<% end %>
diff --git a/lib/pleroma/web/templates/static_fe/static_fe/notice.html.eex b/lib/pleroma/web/templates/static_fe/static_fe/notice.html.eex
index d305d9057..9a7824a32 100644
--- a/lib/pleroma/web/templates/static_fe/static_fe/notice.html.eex
+++ b/lib/pleroma/web/templates/static_fe/static_fe/notice.html.eex
@@ -1,15 +1,29 @@