projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Remote Timeline: add Streaming support
[akkoma]
/
lib
/
pleroma
/
web
/
common_api
/
activity_draft.ex
diff --git
a/lib/pleroma/web/common_api/activity_draft.ex
b/lib/pleroma/web/common_api/activity_draft.ex
index b4480bd18df32f3fc002b3f2473a0118fb128f75..548f76609582c1a1b0695e276e2dd7dd4c02fef9 100644
(file)
--- a/
lib/pleroma/web/common_api/activity_draft.ex
+++ b/
lib/pleroma/web/common_api/activity_draft.ex
@@
-1,5
+1,5
@@
# Pleroma: A lightweight social networking server
# Pleroma: A lightweight social networking server
-# Copyright © 2017-20
19
Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-20
20
Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.CommonAPI.ActivityDraft do
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.CommonAPI.ActivityDraft do
@@
-40,34
+40,34
@@
defmodule Pleroma.Web.CommonAPI.ActivityDraft do
|> put_params(params)
|> status()
|> summary()
|> put_params(params)
|> status()
|> summary()
- |>
attachments(
)
+ |>
with_valid(&attachments/1
)
|> full_payload()
|> full_payload()
- |> in_reply_to()
- |> in_reply_to_conversation()
- |> visibility()
|> expires_at()
|> poll()
|> expires_at()
|> poll()
+ |> with_valid(&in_reply_to/1)
+ |> with_valid(&in_reply_to_conversation/1)
+ |> with_valid(&visibility/1)
|> content()
|> content()
- |>
to_and_cc(
)
- |>
context(
)
+ |>
with_valid(&to_and_cc/1
)
+ |>
with_valid(&context/1
)
|> sensitive()
|> sensitive()
- |>
object(
)
+ |>
with_valid(&object/1
)
|> preview?()
|> preview?()
- |>
changes(
)
+ |>
with_valid(&changes/1
)
|> validate()
end
defp put_params(draft, params) do
|> validate()
end
defp put_params(draft, params) do
- params = Map.put_new(params,
"in_reply_to_status_id", params["in_reply_to_id"
])
+ params = Map.put_new(params,
:in_reply_to_status_id, params[:in_reply_to_id
])
%__MODULE__{draft | params: params}
end
%__MODULE__{draft | params: params}
end
- defp status(%{params: %{
"status" =>
status}} = draft) do
+ defp status(%{params: %{
status:
status}} = draft) do
%__MODULE__{draft | status: String.trim(status)}
end
defp summary(%{params: params} = draft) do
%__MODULE__{draft | status: String.trim(status)}
end
defp summary(%{params: params} = draft) do
- %__MODULE__{draft | summary: Map.get(params,
"spoiler_text"
, "")}
+ %__MODULE__{draft | summary: Map.get(params,
:spoiler_text
, "")}
end
defp full_payload(%{status: status, summary: summary} = draft) do
end
defp full_payload(%{status: status, summary: summary} = draft) do
@@
-84,16
+84,20
@@
defmodule Pleroma.Web.CommonAPI.ActivityDraft do
%__MODULE__{draft | attachments: attachments}
end
%__MODULE__{draft | attachments: attachments}
end
- defp in_reply_to(draft) do
- case Map.get(draft.params, "in_reply_to_status_id") do
- "" -> draft
- nil -> draft
- id -> %__MODULE__{draft | in_reply_to: Activity.get_by_id(id)}
- end
+ defp in_reply_to(%{params: %{in_reply_to_status_id: ""}} = draft), do: draft
+
+ defp in_reply_to(%{params: %{in_reply_to_status_id: id}} = draft) when is_binary(id) do
+ %__MODULE__{draft | in_reply_to: Activity.get_by_id(id)}
end
end
+ defp in_reply_to(%{params: %{in_reply_to_status_id: %Activity{} = in_reply_to}} = draft) do
+ %__MODULE__{draft | in_reply_to: in_reply_to}
+ end
+
+ defp in_reply_to(draft), do: draft
+
defp in_reply_to_conversation(draft) do
defp in_reply_to_conversation(draft) do
- in_reply_to_conversation = Participation.get(draft.params[
"in_reply_to_conversation_id"
])
+ in_reply_to_conversation = Participation.get(draft.params[
:in_reply_to_conversation_id
])
%__MODULE__{draft | in_reply_to_conversation: in_reply_to_conversation}
end
%__MODULE__{draft | in_reply_to_conversation: in_reply_to_conversation}
end
@@
-108,7
+112,7
@@
defmodule Pleroma.Web.CommonAPI.ActivityDraft do
end
defp expires_at(draft) do
end
defp expires_at(draft) do
- case CommonAPI.check_expiry_date(draft.params[
"expires_in"
]) do
+ case CommonAPI.check_expiry_date(draft.params[
:expires_in
]) do
{:ok, expires_at} -> %__MODULE__{draft | expires_at: expires_at}
{:error, message} -> add_error(draft, message)
end
{:ok, expires_at} -> %__MODULE__{draft | expires_at: expires_at}
{:error, message} -> add_error(draft, message)
end
@@
-136,13
+140,11
@@
defmodule Pleroma.Web.CommonAPI.ActivityDraft do
%__MODULE__{draft | content_html: content_html, mentions: mentions, tags: tags}
end
%__MODULE__{draft | content_html: content_html, mentions: mentions, tags: tags}
end
- defp to_and_cc(%{valid?: false} = draft), do: draft
-
defp to_and_cc(draft) do
addressed_users =
draft.mentions
|> Enum.map(fn {_, mentioned_user} -> mentioned_user.ap_id end)
defp to_and_cc(draft) do
addressed_users =
draft.mentions
|> Enum.map(fn {_, mentioned_user} -> mentioned_user.ap_id end)
- |> Utils.get_addressed_users(draft.params[
"to"
])
+ |> Utils.get_addressed_users(draft.params[
:to
])
{to, cc} =
Utils.get_to_and_cc(
{to, cc} =
Utils.get_to_and_cc(
@@
-162,12
+164,10
@@
defmodule Pleroma.Web.CommonAPI.ActivityDraft do
end
defp sensitive(draft) do
end
defp sensitive(draft) do
- sensitive = draft.params[
"sensitive"
] || Enum.member?(draft.tags, {"#nsfw", "nsfw"})
+ sensitive = draft.params[
:sensitive
] || Enum.member?(draft.tags, {"#nsfw", "nsfw"})
%__MODULE__{draft | sensitive: sensitive}
end
%__MODULE__{draft | sensitive: sensitive}
end
- defp object(%{valid?: false} = draft), do: draft
-
defp object(draft) do
emoji = Map.merge(Pleroma.Emoji.Formatter.get_emoji_map(draft.full_payload), draft.emoji)
defp object(draft) do
emoji = Map.merge(Pleroma.Emoji.Formatter.get_emoji_map(draft.full_payload), draft.emoji)
@@
-186,19
+186,25
@@
defmodule Pleroma.Web.CommonAPI.ActivityDraft do
draft.poll
)
|> Map.put("emoji", emoji)
draft.poll
)
|> Map.put("emoji", emoji)
+ |> Map.put("source", draft.status)
%__MODULE__{draft | object: object}
end
defp preview?(draft) do
%__MODULE__{draft | object: object}
end
defp preview?(draft) do
- preview? = Pleroma.Web.ControllerHelper.truthy_param?(draft.params[
"preview"]) || false
+ preview? = Pleroma.Web.ControllerHelper.truthy_param?(draft.params[
:preview])
%__MODULE__{draft | preview?: preview?}
end
%__MODULE__{draft | preview?: preview?}
end
- defp changes(%{valid?: false} = draft), do: draft
-
defp changes(draft) do
direct? = draft.visibility == "direct"
defp changes(draft) do
direct? = draft.visibility == "direct"
+ additional = %{"cc" => draft.cc, "directMessage" => direct?}
+
+ additional =
+ case draft.expires_at do
+ %DateTime{} = expires_at -> Map.put(additional, "expires_at", expires_at)
+ _ -> additional
+ end
changes =
%{
changes =
%{
@@
-206,13
+212,16
@@
defmodule Pleroma.Web.CommonAPI.ActivityDraft do
actor: draft.user,
context: draft.context,
object: draft.object,
actor: draft.user,
context: draft.context,
object: draft.object,
- additional:
%{"cc" => draft.cc, "directMessage" => direct?}
+ additional:
additional
}
|> Utils.maybe_add_list_data(draft.user, draft.visibility)
%__MODULE__{draft | changes: changes}
end
}
|> Utils.maybe_add_list_data(draft.user, draft.visibility)
%__MODULE__{draft | changes: changes}
end
+ defp with_valid(%{valid?: true} = draft, func), do: func.(draft)
+ defp with_valid(draft, _func), do: draft
+
defp add_error(draft, message) do
%__MODULE__{draft | valid?: false, errors: [message | draft.errors]}
end
defp add_error(draft, message) do
%__MODULE__{draft | valid?: false, errors: [message | draft.errors]}
end