include local instance in bubble timeline (#117)
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/117
This commit is contained in:
parent
90c4785b89
commit
1f6deb0ef4
|
@ -128,7 +128,11 @@ def public(%{assigns: %{user: user}} = conn, params) do
|
||||||
|
|
||||||
# GET /api/v1/timelines/bubble
|
# GET /api/v1/timelines/bubble
|
||||||
def bubble(%{assigns: %{user: user}} = conn, params) do
|
def bubble(%{assigns: %{user: user}} = conn, params) do
|
||||||
bubble_instances = Config.get([:instance, :local_bubble], [])
|
bubble_instances =
|
||||||
|
Enum.uniq(
|
||||||
|
Config.get([:instance, :local_bubble], []) ++
|
||||||
|
[Pleroma.Web.Endpoint.host()]
|
||||||
|
)
|
||||||
|
|
||||||
if is_nil(user) do
|
if is_nil(user) do
|
||||||
fail_on_bad_auth(conn)
|
fail_on_bad_auth(conn)
|
||||||
|
|
|
@ -997,18 +997,10 @@ test "with `%{local: true, federated: false}`, forbids unauthenticated access to
|
||||||
describe "bubble" do
|
describe "bubble" do
|
||||||
setup do: oauth_access(["read:statuses"])
|
setup do: oauth_access(["read:statuses"])
|
||||||
|
|
||||||
test "it returns nothing if no bubble is configured", %{user: user, conn: conn} do
|
|
||||||
clear_config([:instance, :local_bubble], [])
|
|
||||||
{:ok, _} = CommonAPI.post(user, %{status: ".", visibility: "public"})
|
|
||||||
|
|
||||||
conn = get(conn, "/api/v1/timelines/bubble")
|
|
||||||
|
|
||||||
assert [] = json_response_and_validate_schema(conn, :ok)
|
|
||||||
end
|
|
||||||
|
|
||||||
test "filtering", %{conn: conn, user: user} do
|
test "filtering", %{conn: conn, user: user} do
|
||||||
clear_config([:instance, :local_bubble], [])
|
clear_config([:instance, :local_bubble], [])
|
||||||
local_user = insert(:user)
|
# our endpoint host has a port in it so let's set the AP ID
|
||||||
|
local_user = insert(:user, %{ap_id: "https://localhost/users/user"})
|
||||||
remote_user = insert(:user, %{ap_id: "https://example.com/users/remote_user"})
|
remote_user = insert(:user, %{ap_id: "https://example.com/users/remote_user"})
|
||||||
{:ok, user, local_user} = User.follow(user, local_user)
|
{:ok, user, local_user} = User.follow(user, local_user)
|
||||||
{:ok, _user, remote_user} = User.follow(user, remote_user)
|
{:ok, _user, remote_user} = User.follow(user, remote_user)
|
||||||
|
@ -1016,15 +1008,8 @@ test "filtering", %{conn: conn, user: user} do
|
||||||
{:ok, local_activity} = CommonAPI.post(local_user, %{status: "Status"})
|
{:ok, local_activity} = CommonAPI.post(local_user, %{status: "Status"})
|
||||||
remote_activity = create_remote_activity(remote_user)
|
remote_activity = create_remote_activity(remote_user)
|
||||||
|
|
||||||
resp =
|
# If nothing, only include ours
|
||||||
conn
|
clear_config([:instance, :local_bubble], [])
|
||||||
|> get("/api/v1/timelines/bubble")
|
|
||||||
|> json_response_and_validate_schema(200)
|
|
||||||
|> Enum.map(& &1["id"])
|
|
||||||
|
|
||||||
assert Enum.empty?(resp)
|
|
||||||
|
|
||||||
clear_config([:instance, :local_bubble], ["localhost:4001"])
|
|
||||||
|
|
||||||
one_instance =
|
one_instance =
|
||||||
conn
|
conn
|
||||||
|
@ -1034,7 +1019,8 @@ test "filtering", %{conn: conn, user: user} do
|
||||||
|
|
||||||
assert local_activity.id in one_instance
|
assert local_activity.id in one_instance
|
||||||
|
|
||||||
clear_config([:instance, :local_bubble], ["localhost:4001", "example.com"])
|
# If we have others, also include theirs
|
||||||
|
clear_config([:instance, :local_bubble], ["example.com"])
|
||||||
|
|
||||||
two_instances =
|
two_instances =
|
||||||
conn
|
conn
|
||||||
|
|
Loading…
Reference in a new issue