Add #nsfw tag if sensitive content bit is set
This commit is contained in:
parent
4647bcd6e6
commit
f53cdabcdf
|
@ -7,9 +7,10 @@ def linkify(text) do
|
||||||
end
|
end
|
||||||
|
|
||||||
@tag_regex ~r/\#\w+/u
|
@tag_regex ~r/\#\w+/u
|
||||||
def parse_tags(text) do
|
def parse_tags(text, data \\ %{}) do
|
||||||
Regex.scan(@tag_regex, text)
|
Regex.scan(@tag_regex, text)
|
||||||
|> Enum.map(fn (["#" <> tag = full_tag]) -> {full_tag, String.downcase(tag)} end)
|
|> Enum.map(fn (["#" <> tag = full_tag]) -> {full_tag, String.downcase(tag)} end)
|
||||||
|
|> (fn map -> if data["sensitive"], do: [{"#nsfw", "nsfw"}] ++ map, else: map end).()
|
||||||
end
|
end
|
||||||
|
|
||||||
def parse_mentions(text) do
|
def parse_mentions(text) do
|
||||||
|
|
|
@ -55,7 +55,7 @@ def post(user, %{"status" => status} = data) do
|
||||||
mentions <- Formatter.parse_mentions(status),
|
mentions <- Formatter.parse_mentions(status),
|
||||||
inReplyTo <- get_replied_to_activity(data["in_reply_to_status_id"]),
|
inReplyTo <- get_replied_to_activity(data["in_reply_to_status_id"]),
|
||||||
to <- to_for_user_and_mentions(user, mentions, inReplyTo),
|
to <- to_for_user_and_mentions(user, mentions, inReplyTo),
|
||||||
tags <- Formatter.parse_tags(status),
|
tags <- Formatter.parse_tags(status, data),
|
||||||
content_html <- make_content_html(status, mentions, attachments, tags),
|
content_html <- make_content_html(status, mentions, attachments, tags),
|
||||||
context <- make_context(inReplyTo),
|
context <- make_context(inReplyTo),
|
||||||
cw <- data["spoiler_text"],
|
cw <- data["spoiler_text"],
|
||||||
|
|
|
@ -56,6 +56,17 @@ test "posting a status", %{conn: conn} do
|
||||||
assert Repo.get(Activity, id)
|
assert Repo.get(Activity, id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "posting a sensitive status", %{conn: conn} do
|
||||||
|
user = insert(:user)
|
||||||
|
|
||||||
|
conn = conn
|
||||||
|
|> assign(:user, user)
|
||||||
|
|> post("/api/v1/statuses", %{"status" => "cofe", "sensitive" => true})
|
||||||
|
|
||||||
|
assert %{"content" => "cofe", "id" => id, "sensitive" => true} = json_response(conn, 200)
|
||||||
|
assert Repo.get(Activity, id)
|
||||||
|
end
|
||||||
|
|
||||||
test "replying to a status", %{conn: conn} do
|
test "replying to a status", %{conn: conn} do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue