StatusView: fix quote visibility
This commit is contained in:
parent
59326247aa
commit
6f11f11519
2 changed files with 42 additions and 1 deletions
|
@ -315,7 +315,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
|
||||||
quote_activity = get_quote(activity, opts)
|
quote_activity = get_quote(activity, opts)
|
||||||
|
|
||||||
quote_post =
|
quote_post =
|
||||||
if quote_activity do
|
if visible_for_user?(quote_activity, opts[:for]) do
|
||||||
quote_rendering_opts = Map.merge(opts, %{activity: quote_activity, show_quote: false})
|
quote_rendering_opts = Map.merge(opts, %{activity: quote_activity, show_quote: false})
|
||||||
render("show.json", quote_rendering_opts)
|
render("show.json", quote_rendering_opts)
|
||||||
else
|
else
|
||||||
|
|
|
@ -446,6 +446,47 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do
|
||||||
assert status.pleroma.quote.id == to_string(quote_post.id)
|
assert status.pleroma.quote.id == to_string(quote_post.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "quoted private post" do
|
||||||
|
user = insert(:user)
|
||||||
|
|
||||||
|
# Insert a private post
|
||||||
|
private = insert(:followers_only_note_activity, user: user)
|
||||||
|
private_object = Object.normalize(private)
|
||||||
|
|
||||||
|
# Create a public post quoting the private post
|
||||||
|
quote_private =
|
||||||
|
insert(:note_activity, note: insert(:note, data: %{"quoteUrl" => private_object.data["id"]}))
|
||||||
|
|
||||||
|
status = StatusView.render("show.json", %{activity: quote_private})
|
||||||
|
|
||||||
|
# The quote isn't rendered
|
||||||
|
refute status.pleroma.quote
|
||||||
|
assert status.pleroma.quote_url == private_object.data["id"]
|
||||||
|
|
||||||
|
# After following the user, the quote is rendered
|
||||||
|
follower = insert(:user)
|
||||||
|
CommonAPI.follow(follower, user)
|
||||||
|
|
||||||
|
status = StatusView.render("show.json", %{activity: quote_private, for: follower})
|
||||||
|
assert status.pleroma.quote.id == to_string(private.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "quoted direct message" do
|
||||||
|
# Insert a direct message
|
||||||
|
direct = insert(:direct_note_activity)
|
||||||
|
direct_object = Object.normalize(direct)
|
||||||
|
|
||||||
|
# Create a public post quoting the direct message
|
||||||
|
quote_direct =
|
||||||
|
insert(:note_activity, note: insert(:note, data: %{"quoteUrl" => direct_object.data["id"]}))
|
||||||
|
|
||||||
|
status = StatusView.render("show.json", %{activity: quote_direct})
|
||||||
|
|
||||||
|
# The quote isn't rendered
|
||||||
|
refute status.pleroma.quote
|
||||||
|
assert status.pleroma.quote_url == direct_object.data["id"]
|
||||||
|
end
|
||||||
|
|
||||||
test "contains mentions" do
|
test "contains mentions" do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
mentioned = insert(:user)
|
mentioned = insert(:user)
|
||||||
|
|
Loading…
Reference in a new issue