alias Pleroma.Web.CommonAPI
alias Pleroma.Web.MastodonAPI.AccountView
alias Pleroma.Web.MastodonAPI.ScheduledActivityView
+ alias Pleroma.Web.OAuth.Token
alias Pleroma.Web.Plugs.OAuthScopesPlug
alias Pleroma.Web.Plugs.RateLimiter
# Creates a scheduled status when `scheduled_at` param is present and it's far enough
def create(
%{
- assigns: %{user: user, token: %{app_id: app_id}},
+ assigns: %{user: user},
body_params: %{status: _, scheduled_at: scheduled_at} = params
} = conn,
_
when not is_nil(scheduled_at) do
params =
Map.put(params, :in_reply_to_status_id, params[:in_reply_to_id])
- |> add_application(app_id)
+ |> put_application(conn)
attrs = %{
params: Map.new(params, fn {key, value} -> {to_string(key), value} end),
end
# Creates a regular status
- def create(
- %{assigns: %{user: user, token: %{app_id: app_id}}, body_params: %{status: _} = params} =
- conn,
- _
- ) do
+ def create(%{assigns: %{user: user}, body_params: %{status: _} = params} = conn, _) do
params =
Map.put(params, :in_reply_to_status_id, params[:in_reply_to_id])
- |> add_application(app_id)
+ |> put_application(conn)
with {:ok, activity} <- CommonAPI.post(user, params) do
try_render(conn, "show.json",
)
end
- defp add_application(params, app_id) do
- params |> Map.put(:application, Pleroma.Web.OAuth.App.get_app_by_id(app_id))
+ defp put_application(params, %{assigns: %{token: %Token{user: %User{} = user} = token}} = _conn) do
+ if user.disclose_client do
+ %{client_name: client_name, website: website} = Repo.preload(token, :app).app
+ Map.put(params, :generator, %{type: "Application", name: client_name, url: website})
+ else
+ Map.put(params, :generator, nil)
+ end
end
+
+ defp put_application(params, _), do: Map.put(params, :generator, nil)
end