Do not call LanguageDetector when not language is provided
Signed-off-by: mkljczk <git@mkljczk.pl>
This commit is contained in:
parent
d7f9d30b2c
commit
3b74d13147
2 changed files with 37 additions and 6 deletions
|
|
@ -152,11 +152,19 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do
|
||||||
def maybe_add_language(object) do
|
def maybe_add_language(object) do
|
||||||
language =
|
language =
|
||||||
[
|
[
|
||||||
get_language_from_context(object),
|
&get_language_from_context/1,
|
||||||
get_language_from_content_map(object),
|
&get_language_from_content_map/1,
|
||||||
get_language_from_content(object)
|
&get_language_from_content/1
|
||||||
]
|
]
|
||||||
|> Enum.find(&good_locale_code?(&1))
|
|> Enum.find_value(fn get_language ->
|
||||||
|
language = get_language.(object)
|
||||||
|
|
||||||
|
if good_locale_code?(language) do
|
||||||
|
language
|
||||||
|
else
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
if language do
|
if language do
|
||||||
Map.put(object, "language", language)
|
Map.put(object, "language", language)
|
||||||
|
|
@ -189,8 +197,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do
|
||||||
|
|
||||||
defp get_language_from_content_map(_), do: nil
|
defp get_language_from_content_map(_), do: nil
|
||||||
|
|
||||||
defp get_language_from_content(%{"summary" => summary, "content" => content}) do
|
defp get_language_from_content(%{"content" => content} = object) do
|
||||||
LanguageDetector.detect("#{summary} #{content}")
|
LanguageDetector.detect("#{object["summary"] || ""} #{content}")
|
||||||
end
|
end
|
||||||
|
|
||||||
defp get_language_from_content(_), do: nil
|
defp get_language_from_content(_), do: nil
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidatorTest
|
||||||
alias Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator
|
alias Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator
|
||||||
alias Pleroma.Web.ActivityPub.Utils
|
alias Pleroma.Web.ActivityPub.Utils
|
||||||
|
|
||||||
|
import Mock
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
|
|
||||||
describe "Notes" do
|
describe "Notes" do
|
||||||
|
|
@ -234,6 +235,28 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidatorTest
|
||||||
assert object.language == "pl"
|
assert object.language == "pl"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test_with_mock "it doesn't call LanguageDetector when language is specified",
|
||||||
|
Pleroma.Language.LanguageDetector,
|
||||||
|
detect: fn _ -> nil end do
|
||||||
|
user = insert(:user)
|
||||||
|
|
||||||
|
note = %{
|
||||||
|
"to" => ["https://www.w3.org/ns/activitystreams#Public"],
|
||||||
|
"cc" => [],
|
||||||
|
"id" => Utils.generate_object_id(),
|
||||||
|
"type" => "Note",
|
||||||
|
"content" => "a post in English",
|
||||||
|
"contentMap" => %{
|
||||||
|
"en" => "a post in English"
|
||||||
|
},
|
||||||
|
"attributedTo" => user.ap_id
|
||||||
|
}
|
||||||
|
|
||||||
|
ArticleNotePageValidator.cast_and_apply(note)
|
||||||
|
|
||||||
|
refute called(Pleroma.Language.LanguageDetector.detect(:_))
|
||||||
|
end
|
||||||
|
|
||||||
test "it adds contentMap if language is specified" do
|
test "it adds contentMap if language is specified" do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue