CommonAPI: Visibility refactor.

This commit is contained in:
lain 2019-05-15 16:35:33 +02:00
parent cbb3451023
commit 7a92e701b9

View file

@ -116,21 +116,16 @@ def unfavorite(id_or_ap_id, user) do
end end
end end
def get_visibility(%{"visibility" => visibility}) def get_visibility(%{"visibility" => visibility}, in_reply_to)
when visibility in ~w{public unlisted private direct}, when visibility in ~w{public unlisted private direct},
do: visibility do: {visibility, get_replied_to_visibility(in_reply_to)}
def get_visibility(%{"in_reply_to_status_id" => status_id}) when not is_nil(status_id) do def get_visibility(_, in_reply_to) when not is_nil(in_reply_to) do
case get_replied_to_activity(status_id) do visibility = get_replied_to_visibility(in_reply_to)
nil -> {visibility, visibility}
"public"
in_reply_to ->
get_replied_to_visibility(in_reply_to)
end
end end
def get_visibility(_), do: "public" def get_visibility(_, in_reply_to), do: {"public", get_replied_to_visibility(in_reply_to)}
def get_replied_to_visibility(nil), do: nil def get_replied_to_visibility(nil), do: nil
@ -145,9 +140,8 @@ def post(user, %{"status" => status} = data) do
with status <- String.trim(status), with status <- String.trim(status),
attachments <- attachments_from_ids(data), attachments <- attachments_from_ids(data),
visibility <- get_visibility(data),
in_reply_to <- get_replied_to_activity(data["in_reply_to_status_id"]), in_reply_to <- get_replied_to_activity(data["in_reply_to_status_id"]),
in_reply_to_visibility <- get_replied_to_visibility(in_reply_to), {visibility, in_reply_to_visibility} <- get_visibility(data, in_reply_to),
{_, false} <- {_, false} <-
{:private_to_public, in_reply_to_visibility == "direct" && visibility != "direct"}, {:private_to_public, in_reply_to_visibility == "direct" && visibility != "direct"},
{content_html, mentions, tags} <- {content_html, mentions, tags} <-