Display multilang in history items
This commit is contained in:
parent
39cdde78e1
commit
ad8f47fe8f
3 changed files with 57 additions and 13 deletions
|
@ -6,6 +6,7 @@ defmodule Pleroma.Web.ApiSpec.StatusOperation do
|
||||||
alias OpenApiSpex.Operation
|
alias OpenApiSpex.Operation
|
||||||
alias OpenApiSpex.Schema
|
alias OpenApiSpex.Schema
|
||||||
alias Pleroma.Web.ApiSpec.AccountOperation
|
alias Pleroma.Web.ApiSpec.AccountOperation
|
||||||
|
alias Pleroma.Web.ApiSpec.Helpers
|
||||||
alias Pleroma.Web.ApiSpec.Schemas.Account
|
alias Pleroma.Web.ApiSpec.Schemas.Account
|
||||||
alias Pleroma.Web.ApiSpec.Schemas.ApiError
|
alias Pleroma.Web.ApiSpec.Schemas.ApiError
|
||||||
alias Pleroma.Web.ApiSpec.Schemas.Attachment
|
alias Pleroma.Web.ApiSpec.Schemas.Attachment
|
||||||
|
@ -769,6 +770,12 @@ defp status_history_response do
|
||||||
format: :html,
|
format: :html,
|
||||||
description: "HTML-encoded status content"
|
description: "HTML-encoded status content"
|
||||||
},
|
},
|
||||||
|
content_map:
|
||||||
|
Helpers.multilang_map_of(%Schema{
|
||||||
|
type: :string,
|
||||||
|
format: :html,
|
||||||
|
description: "HTML-encoded status content"
|
||||||
|
}),
|
||||||
sensitive: %Schema{
|
sensitive: %Schema{
|
||||||
type: :boolean,
|
type: :boolean,
|
||||||
description: "Is this status marked as sensitive content?"
|
description: "Is this status marked as sensitive content?"
|
||||||
|
@ -778,6 +785,12 @@ defp status_history_response do
|
||||||
description:
|
description:
|
||||||
"Subject or summary line, below which status content is collapsed until expanded"
|
"Subject or summary line, below which status content is collapsed until expanded"
|
||||||
},
|
},
|
||||||
|
spoiler_text_map:
|
||||||
|
Helpers.multilang_map_of(%Schema{
|
||||||
|
type: :string,
|
||||||
|
description:
|
||||||
|
"Subject or summary line, below which status content is collapsed until expanded"
|
||||||
|
}),
|
||||||
created_at: %Schema{
|
created_at: %Schema{
|
||||||
type: :string,
|
type: :string,
|
||||||
format: "date-time",
|
format: "date-time",
|
||||||
|
|
|
@ -359,8 +359,6 @@ def render("show.json", %{activity: %{data: %{"object" => _object}} = activity}
|
||||||
chrono_order: chrono_order
|
chrono_order: chrono_order
|
||||||
})
|
})
|
||||||
|
|
||||||
content_languages = Map.keys(content_html_map)
|
|
||||||
|
|
||||||
summary = object.data["summary"] || ""
|
summary = object.data["summary"] || ""
|
||||||
summary_map = object.data["summaryMap"] || %{}
|
summary_map = object.data["summaryMap"] || %{}
|
||||||
|
|
||||||
|
@ -536,19 +534,17 @@ def render(
|
||||||
|
|
||||||
created_at = Utils.to_masto_date(object.data["updated"] || object.data["published"])
|
created_at = Utils.to_masto_date(object.data["updated"] || object.data["published"])
|
||||||
|
|
||||||
content =
|
{content_html, content_html_map} =
|
||||||
object
|
get_content_and_map(%{
|
||||||
|> render_content()
|
type: :html,
|
||||||
|
user: opts[:for],
|
||||||
content_html =
|
activity: activity,
|
||||||
content
|
object: object,
|
||||||
|> Activity.HTML.get_cached_scrubbed_html_for_activity(
|
chrono_order: chrono_order
|
||||||
User.html_filter_policy(opts[:for]),
|
})
|
||||||
activity,
|
|
||||||
"mastoapi:content:#{chrono_order}"
|
|
||||||
)
|
|
||||||
|
|
||||||
summary = object.data["summary"] || ""
|
summary = object.data["summary"] || ""
|
||||||
|
summary_map = object.data["summaryMap"] || %{}
|
||||||
|
|
||||||
%{
|
%{
|
||||||
account:
|
account:
|
||||||
|
@ -557,8 +553,10 @@ def render(
|
||||||
for: opts[:for]
|
for: opts[:for]
|
||||||
}),
|
}),
|
||||||
content: content_html,
|
content: content_html,
|
||||||
|
content_map: content_html_map,
|
||||||
sensitive: sensitive,
|
sensitive: sensitive,
|
||||||
spoiler_text: summary,
|
spoiler_text: summary,
|
||||||
|
spoiler_text_map: summary_map,
|
||||||
created_at: created_at,
|
created_at: created_at,
|
||||||
media_attachments: attachments,
|
media_attachments: attachments,
|
||||||
emojis: build_emojis(object.data["emoji"]),
|
emojis: build_emojis(object.data["emoji"]),
|
||||||
|
|
|
@ -1024,4 +1024,37 @@ test "with a source string, renders source and put text/plain as the content typ
|
||||||
assert status.content_type == "text/plain"
|
assert status.content_type == "text/plain"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "history items" do
|
||||||
|
test "renders multilang" do
|
||||||
|
user = insert(:user)
|
||||||
|
|
||||||
|
note_obj =
|
||||||
|
insert(:note,
|
||||||
|
data: %{
|
||||||
|
"content" => "mew mew",
|
||||||
|
"contentMap" => %{"en" => "mew mew", "cmn" => "喵喵"},
|
||||||
|
"summary" => "mew",
|
||||||
|
"summaryMap" => %{"en" => "mew", "cmn" => "喵"}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
note = insert(:note_activity, note: note_obj, user: user)
|
||||||
|
|
||||||
|
status =
|
||||||
|
StatusView.render("history_item.json", %{
|
||||||
|
activity: note,
|
||||||
|
user: user,
|
||||||
|
hashtags: [],
|
||||||
|
item: %{object: note_obj, chrono_order: 0}
|
||||||
|
})
|
||||||
|
|
||||||
|
assert %{
|
||||||
|
content: "mew mew",
|
||||||
|
content_map: %{"en" => "mew mew", "cmn" => "喵喵"},
|
||||||
|
spoiler_text: "mew",
|
||||||
|
spoiler_text_map: %{"en" => "mew", "cmn" => "喵"}
|
||||||
|
} = status
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue