projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'issue/1218' into 'develop'
[akkoma]
/
lib
/
pleroma
/
web
/
mastodon_api
/
controllers
/
mastodon_api_controller.ex
diff --git
a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex
b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex
index c54462bb38a51d4a4d3ed04cf39b50b26f494ec0..bb81b061e7eb09179ac11d08eea0163386e212a8 100644
(file)
--- a/
lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex
+++ b/
lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex
@@
-6,15
+6,15
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
use Pleroma.Web, :controller
import Pleroma.Web.ControllerHelper,
use Pleroma.Web, :controller
import Pleroma.Web.ControllerHelper,
- only: [json_response: 3, add_link_headers:
5, add_link_headers: 4
, add_link_headers: 3]
+ only: [json_response: 3, add_link_headers:
2
, add_link_headers: 3]
alias Ecto.Changeset
alias Pleroma.Activity
alias Pleroma.Bookmark
alias Pleroma.Config
alias Pleroma.Conversation.Participation
alias Ecto.Changeset
alias Pleroma.Activity
alias Pleroma.Bookmark
alias Pleroma.Config
alias Pleroma.Conversation.Participation
+ alias Pleroma.Emoji
alias Pleroma.Filter
alias Pleroma.Filter
- alias Pleroma.Formatter
alias Pleroma.HTTP
alias Pleroma.Notification
alias Pleroma.Object
alias Pleroma.HTTP
alias Pleroma.Notification
alias Pleroma.Object
@@
-140,13
+140,15
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
user_info_emojis =
user.info
|> Map.get(:emoji, [])
user_info_emojis =
user.info
|> Map.get(:emoji, [])
- |> Enum.concat(Formatter.get_emoji_map(emojis_text))
+ |> Enum.concat(
Emoji.
Formatter.get_emoji_map(emojis_text))
|> Enum.dedup()
info_params =
[
:no_rich_text,
:locked,
|> Enum.dedup()
info_params =
[
:no_rich_text,
:locked,
+ :hide_followers_count,
+ :hide_follows_count,
:hide_followers,
:hide_follows,
:hide_favorites,
:hide_followers,
:hide_follows,
:hide_favorites,
@@
-331,7
+333,7
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
defp mastodonized_emoji do
Pleroma.Emoji.get_all()
defp mastodonized_emoji do
Pleroma.Emoji.get_all()
- |> Enum.map(fn {shortcode,
relative_url, tags
} ->
+ |> Enum.map(fn {shortcode,
%Pleroma.Emoji{file: relative_url, tags: tags}
} ->
url = to_string(URI.merge(Web.base_url(), relative_url))
%{
url = to_string(URI.merge(Web.base_url(), relative_url))
%{
@@
-365,7
+367,7
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|> Enum.reverse()
conn
|> Enum.reverse()
conn
- |> add_link_headers(
:home_timeline,
activities)
+ |> add_link_headers(activities)
|> put_view(StatusView)
|> render("index.json", %{activities: activities, for: user, as: :activity})
end
|> put_view(StatusView)
|> render("index.json", %{activities: activities, for: user, as: :activity})
end
@@
-379,12
+381,11
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|> Map.put("local_only", local_only)
|> Map.put("blocking_user", user)
|> Map.put("muting_user", user)
|> Map.put("local_only", local_only)
|> Map.put("blocking_user", user)
|> Map.put("muting_user", user)
- |> Map.put("user", user)
|> ActivityPub.fetch_public_activities()
|> Enum.reverse()
conn
|> ActivityPub.fetch_public_activities()
|> Enum.reverse()
conn
- |> add_link_headers(
:public_timeline, activities, false
, %{"local" => local_only})
+ |> add_link_headers(
activities
, %{"local" => local_only})
|> put_view(StatusView)
|> render("index.json", %{activities: activities, for: user, as: :activity})
end
|> put_view(StatusView)
|> render("index.json", %{activities: activities, for: user, as: :activity})
end
@@
-398,7
+399,7
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
activities = ActivityPub.fetch_user_activities(user, reading_user, params)
conn
activities = ActivityPub.fetch_user_activities(user, reading_user, params)
conn
- |> add_link_headers(
:user_statuses, activities, params["id"]
)
+ |> add_link_headers(
activities
)
|> put_view(StatusView)
|> render("index.json", %{
activities: activities,
|> put_view(StatusView)
|> render("index.json", %{
activities: activities,
@@
-422,7
+423,7
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|> Pagination.fetch_paginated(params)
conn
|> Pagination.fetch_paginated(params)
conn
- |> add_link_headers(
:dm_timeline,
activities)
+ |> add_link_headers(activities)
|> put_view(StatusView)
|> render("index.json", %{activities: activities, for: user, as: :activity})
end
|> put_view(StatusView)
|> render("index.json", %{activities: activities, for: user, as: :activity})
end
@@
-485,7
+486,7
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
end
def get_poll(%{assigns: %{user: user}} = conn, %{"id" => id}) do
end
def get_poll(%{assigns: %{user: user}} = conn, %{"id" => id}) do
- with %Object{} = object <- Object.get_by_id
(id
),
+ with %Object{} = object <- Object.get_by_id
_and_maybe_refetch(id, interval: 60
),
%Activity{} = activity <- Activity.get_create_by_object_ap_id(object.data["id"]),
true <- Visibility.visible_for_user?(activity, user) do
conn
%Activity{} = activity <- Activity.get_create_by_object_ap_id(object.data["id"]),
true <- Visibility.visible_for_user?(activity, user) do
conn
@@
-537,7
+538,7
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
def scheduled_statuses(%{assigns: %{user: user}} = conn, params) do
with scheduled_activities <- MastodonAPI.get_scheduled_activities(user, params) do
conn
def scheduled_statuses(%{assigns: %{user: user}} = conn, params) do
with scheduled_activities <- MastodonAPI.get_scheduled_activities(user, params) do
conn
- |> add_link_headers(
:scheduled_statuses,
scheduled_activities)
+ |> add_link_headers(scheduled_activities)
|> put_view(ScheduledActivityView)
|> render("index.json", %{scheduled_activities: scheduled_activities})
end
|> put_view(ScheduledActivityView)
|> render("index.json", %{scheduled_activities: scheduled_activities})
end
@@
-609,7
+610,12
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
{:ok, activity} ->
conn
|> put_view(StatusView)
{:ok, activity} ->
conn
|> put_view(StatusView)
- |> try_render("status.json", %{activity: activity, for: user, as: :activity})
+ |> try_render("status.json", %{
+ activity: activity,
+ for: user,
+ as: :activity,
+ with_direct_conversation_id: true
+ })
end
end
end
end
end
end
@@
-720,7
+726,7
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
notifications = MastodonAPI.get_notifications(user, params)
conn
notifications = MastodonAPI.get_notifications(user, params)
conn
- |> add_link_headers(
:notifications,
notifications)
+ |> add_link_headers(notifications)
|> put_view(NotificationView)
|> render("index.json", %{notifications: notifications, for: user})
end
|> put_view(NotificationView)
|> render("index.json", %{notifications: notifications, for: user})
end
@@
-842,6
+848,7
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
def favourited_by(%{assigns: %{user: user}} = conn, %{"id" => id}) do
with %Activity{} = activity <- Activity.get_by_id_with_object(id),
def favourited_by(%{assigns: %{user: user}} = conn, %{"id" => id}) do
with %Activity{} = activity <- Activity.get_by_id_with_object(id),
+ {:visible, true} <- {:visible, Visibility.visible_for_user?(activity, user)},
%Object{data: %{"likes" => likes}} <- Object.normalize(activity) do
q = from(u in User, where: u.ap_id in ^likes)
%Object{data: %{"likes" => likes}} <- Object.normalize(activity) do
q = from(u in User, where: u.ap_id in ^likes)
@@
-853,12
+860,14
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|> put_view(AccountView)
|> render("accounts.json", %{for: user, users: users, as: :user})
else
|> put_view(AccountView)
|> render("accounts.json", %{for: user, users: users, as: :user})
else
+ {:visible, false} -> {:error, :not_found}
_ -> json(conn, [])
end
end
def reblogged_by(%{assigns: %{user: user}} = conn, %{"id" => id}) do
with %Activity{} = activity <- Activity.get_by_id_with_object(id),
_ -> json(conn, [])
end
end
def reblogged_by(%{assigns: %{user: user}} = conn, %{"id" => id}) do
with %Activity{} = activity <- Activity.get_by_id_with_object(id),
+ {:visible, true} <- {:visible, Visibility.visible_for_user?(activity, user)},
%Object{data: %{"announcements" => announces}} <- Object.normalize(activity) do
q = from(u in User, where: u.ap_id in ^announces)
%Object{data: %{"announcements" => announces}} <- Object.normalize(activity) do
q = from(u in User, where: u.ap_id in ^announces)
@@
-870,6
+879,7
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|> put_view(AccountView)
|> render("accounts.json", %{for: user, users: users, as: :user})
else
|> put_view(AccountView)
|> render("accounts.json", %{for: user, users: users, as: :user})
else
+ {:visible, false} -> {:error, :not_found}
_ -> json(conn, [])
end
end
_ -> json(conn, [])
end
end
@@
-908,7
+918,7
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|> Enum.reverse()
conn
|> Enum.reverse()
conn
- |> add_link_headers(
:hashtag_timeline, activities, params["tag"]
, %{"local" => local_only})
+ |> add_link_headers(
activities
, %{"local" => local_only})
|> put_view(StatusView)
|> render("index.json", %{activities: activities, for: user, as: :activity})
end
|> put_view(StatusView)
|> render("index.json", %{activities: activities, for: user, as: :activity})
end
@@
-924,7
+934,7
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
end
conn
end
conn
- |> add_link_headers(
:followers, followers, user
)
+ |> add_link_headers(
followers
)
|> put_view(AccountView)
|> render("accounts.json", %{for: for_user, users: followers, as: :user})
end
|> put_view(AccountView)
|> render("accounts.json", %{for: for_user, users: followers, as: :user})
end
@@
-941,7
+951,7
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
end
conn
end
conn
- |> add_link_headers(
:following, followers, user
)
+ |> add_link_headers(
followers
)
|> put_view(AccountView)
|> render("accounts.json", %{for: for_user, users: followers, as: :user})
end
|> put_view(AccountView)
|> render("accounts.json", %{for: for_user, users: followers, as: :user})
end
@@
-1166,7
+1176,7
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|> Enum.reverse()
conn
|> Enum.reverse()
conn
- |> add_link_headers(
:favourites,
activities)
+ |> add_link_headers(activities)
|> put_view(StatusView)
|> render("index.json", %{activities: activities, for: user, as: :activity})
end
|> put_view(StatusView)
|> render("index.json", %{activities: activities, for: user, as: :activity})
end
@@
-1193,7
+1203,7
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|> Enum.reverse()
conn
|> Enum.reverse()
conn
- |> add_link_headers(
:favourites,
activities)
+ |> add_link_headers(activities)
|> put_view(StatusView)
|> render("index.json", %{activities: activities, for: for_user, as: :activity})
else
|> put_view(StatusView)
|> render("index.json", %{activities: activities, for: for_user, as: :activity})
else
@@
-1214,7
+1224,7
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|> Enum.map(fn b -> Map.put(b.activity, :bookmark, Map.delete(b, :activity)) end)
conn
|> Enum.map(fn b -> Map.put(b.activity, :bookmark, Map.delete(b, :activity)) end)
conn
- |> add_link_headers(
:bookmarks,
bookmarks)
+ |> add_link_headers(bookmarks)
|> put_view(StatusView)
|> render("index.json", %{activities: activities, for: user, as: :activity})
end
|> put_view(StatusView)
|> render("index.json", %{activities: activities, for: user, as: :activity})
end
@@
-1654,7
+1664,7
@@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
end)
conn
end)
conn
- |> add_link_headers(
:conversations,
participations)
+ |> add_link_headers(participations)
|> json(conversations)
end
|> json(conversations)
end