Merge branch 'activitypub/add-discoverable-parameter-in-activitypub-actor' into 'develop'

Activitypub/Add `discoverable` parameter in ActivityPub actor

See merge request pleroma/pleroma!1641
This commit is contained in:
kaniini 2019-09-26 02:57:42 +00:00
commit 59ae9255fb
8 changed files with 29 additions and 9 deletions

View file

@ -109,6 +109,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Admin API: Added moderation log
- Web response cache (currently, enabled for ActivityPub)
- Mastodon API: Added an endpoint to get multiple statuses by IDs (`GET /api/v1/statuses/?ids[]=1&ids[]=2`)
- ActivityPub: Add ActivityPub actor's `discoverable` parameter.
### Changed
- Configuration: Filter.AnonymizeFilename added ability to retain file extension with custom text

View file

@ -54,6 +54,7 @@ defmodule Pleroma.User.Info do
field(:pleroma_settings_store, :map, default: %{})
field(:fields, {:array, :map}, default: nil)
field(:raw_fields, {:array, :map}, default: [])
field(:discoverable, :boolean, default: false)
field(:notification_settings, :map,
default: %{
@ -277,7 +278,8 @@ def remote_user_creation(info, params) do
:hide_follows_count,
:follower_count,
:fields,
:following_count
:following_count,
:discoverable
])
|> validate_fields(true)
end
@ -295,6 +297,7 @@ def user_upgrade(info, params, remote? \\ false) do
:hide_follows,
:fields,
:hide_followers,
:discoverable,
:hide_followers_count,
:hide_follows_count
])
@ -318,7 +321,8 @@ def profile_update(info, params) do
:skip_thread_containment,
:fields,
:raw_fields,
:pleroma_settings_store
:pleroma_settings_store,
:discoverable
])
|> validate_fields()
end

View file

@ -1001,6 +1001,7 @@ defp object_to_user_data(data) do
locked = data["manuallyApprovesFollowers"] || false
data = Transmogrifier.maybe_fix_user_object(data)
discoverable = data["discoverable"] || false
user_data = %{
ap_id: data["id"],
@ -1009,7 +1010,8 @@ defp object_to_user_data(data) do
source_data: data,
banner: banner,
fields: fields,
locked: locked
locked: locked,
discoverable: discoverable
},
avatar: avatar,
name: data["name"],

View file

@ -106,7 +106,8 @@ def render("user.json", %{user: user}) do
},
"endpoints" => endpoints,
"attachment" => fields,
"tag" => (user.info.source_data["tag"] || []) ++ emoji_tags
"tag" => (user.info.source_data["tag"] || []) ++ emoji_tags,
"discoverable" => user.info.discoverable
}
|> Map.merge(maybe_make_image(&User.avatar_url/2, "icon", user))
|> Map.merge(maybe_make_image(&User.banner_url/2, "image", user))

View file

@ -153,7 +153,8 @@ def update_credentials(%{assigns: %{user: user}} = conn, params) do
:hide_follows,
:hide_favorites,
:show_role,
:skip_thread_containment
:skip_thread_containment,
:discoverable
]
|> Enum.reduce(%{}, fn key, acc ->
add_if_present(acc, params, to_string(key), key, fn value ->

View file

@ -116,6 +116,8 @@ defp do_render("account.json", %{user: user} = opts) do
bio = HTML.filter_tags(user.bio, User.html_filter_policy(opts[:for]))
relationship = render("relationship.json", %{user: opts[:for], target: user})
discoverable = user.info.discoverable
%{
id: to_string(user.id),
username: username_from_nickname(user.nickname),
@ -139,7 +141,9 @@ defp do_render("account.json", %{user: user} = opts) do
note: HTML.strip_tags((user.bio || "") |> String.replace("<br>", "\n")),
sensitive: false,
fields: raw_fields,
pleroma: %{}
pleroma: %{
discoverable: discoverable
}
},
# Pleroma extension

View file

@ -11,6 +11,7 @@
"@id": "ostatus:conversation",
"@type": "@id"
},
"discoverable": "toot:discoverable",
"manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
"ostatus": "http://ostatus.org#",
"schema": "http://schema.org",

View file

@ -67,7 +67,9 @@ test "Represent a user account" do
source: %{
note: "valid html",
sensitive: false,
pleroma: %{},
pleroma: %{
discoverable: false
},
fields: []
},
pleroma: %{
@ -137,7 +139,9 @@ test "Represent a Service(bot) account" do
source: %{
note: user.bio,
sensitive: false,
pleroma: %{},
pleroma: %{
discoverable: false
},
fields: []
},
pleroma: %{
@ -310,7 +314,9 @@ test "represent an embedded relationship" do
source: %{
note: user.bio,
sensitive: false,
pleroma: %{},
pleroma: %{
discoverable: false
},
fields: []
},
pleroma: %{