forked from AkkomaGang/akkoma
TwitterApi: Add direct message endpoint
This commit is contained in:
parent
2cf40237ff
commit
ea9a776d7b
3 changed files with 44 additions and 0 deletions
|
@ -270,6 +270,7 @@ defmodule Pleroma.Web.Router do
|
||||||
get("/statuses/friends_timeline", TwitterAPI.Controller, :friends_timeline)
|
get("/statuses/friends_timeline", TwitterAPI.Controller, :friends_timeline)
|
||||||
get("/statuses/mentions", TwitterAPI.Controller, :mentions_timeline)
|
get("/statuses/mentions", TwitterAPI.Controller, :mentions_timeline)
|
||||||
get("/statuses/mentions_timeline", TwitterAPI.Controller, :mentions_timeline)
|
get("/statuses/mentions_timeline", TwitterAPI.Controller, :mentions_timeline)
|
||||||
|
get("/statuses/dm_timeline", TwitterAPI.Controller, :dm_timeline)
|
||||||
get("/qvitter/statuses/notifications", TwitterAPI.Controller, :notifications)
|
get("/qvitter/statuses/notifications", TwitterAPI.Controller, :notifications)
|
||||||
|
|
||||||
# XXX: this is really a pleroma API, but we want to keep the pleroma namespace clean
|
# XXX: this is really a pleroma API, but we want to keep the pleroma namespace clean
|
||||||
|
|
|
@ -126,6 +126,19 @@ def mentions_timeline(%{assigns: %{user: user}} = conn, params) do
|
||||||
|> render(ActivityView, "index.json", %{activities: activities, for: user})
|
|> render(ActivityView, "index.json", %{activities: activities, for: user})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def dm_timeline(%{assigns: %{user: user}} = conn, params) do
|
||||||
|
query =
|
||||||
|
ActivityPub.fetch_activities_query(
|
||||||
|
[user.ap_id],
|
||||||
|
Map.merge(params, %{"type" => "Create", visibility: "direct"})
|
||||||
|
)
|
||||||
|
|
||||||
|
activities = Repo.all(query)
|
||||||
|
|
||||||
|
conn
|
||||||
|
|> render(ActivityView, "index.json", %{activities: activities, for: user})
|
||||||
|
end
|
||||||
|
|
||||||
def notifications(%{assigns: %{user: user}} = conn, params) do
|
def notifications(%{assigns: %{user: user}} = conn, params) do
|
||||||
notifications = Notification.for_user(user, params)
|
notifications = Notification.for_user(user, params)
|
||||||
|
|
||||||
|
|
|
@ -271,6 +271,36 @@ test "with credentials", %{conn: conn, user: current_user} do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "GET /statuses/dm_timeline.json" do
|
||||||
|
test "it show direct messages", %{conn: conn} do
|
||||||
|
user_one = insert(:user)
|
||||||
|
user_two = insert(:user)
|
||||||
|
|
||||||
|
{:ok, user_two} = User.follow(user_two, user_one)
|
||||||
|
|
||||||
|
{:ok, direct} =
|
||||||
|
CommonAPI.post(user_one, %{
|
||||||
|
"status" => "Hi @#{user_two.nickname}!",
|
||||||
|
"visibility" => "direct"
|
||||||
|
})
|
||||||
|
|
||||||
|
{:ok, _follower_only} =
|
||||||
|
CommonAPI.post(user_one, %{
|
||||||
|
"status" => "Hi @#{user_two.nickname}!",
|
||||||
|
"visibility" => "private"
|
||||||
|
})
|
||||||
|
|
||||||
|
# Only direct should be visible here
|
||||||
|
res_conn =
|
||||||
|
conn
|
||||||
|
|> assign(:user, user_two)
|
||||||
|
|> get("/api/statuses/dm_timeline.json")
|
||||||
|
|
||||||
|
[status] = json_response(res_conn, 200)
|
||||||
|
assert status["id"] == direct.id
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "GET /statuses/mentions.json" do
|
describe "GET /statuses/mentions.json" do
|
||||||
setup [:valid_user]
|
setup [:valid_user]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue