forked from AkkomaGang/akkoma
ActivityPub: Ingest information about chat acceptance.
This commit is contained in:
parent
8289ec67a8
commit
5c0bf4c472
4 changed files with 41 additions and 30 deletions
|
@ -437,7 +437,8 @@ def remote_user_changeset(struct \\ %User{local: false}, params) do
|
||||||
:discoverable,
|
:discoverable,
|
||||||
:invisible,
|
:invisible,
|
||||||
:actor_type,
|
:actor_type,
|
||||||
:also_known_as
|
:also_known_as,
|
||||||
|
:accepts_chat_messages
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|> validate_required([:name, :ap_id])
|
|> validate_required([:name, :ap_id])
|
||||||
|
|
|
@ -1224,6 +1224,7 @@ defp object_to_user_data(data) do
|
||||||
end)
|
end)
|
||||||
|
|
||||||
locked = data["manuallyApprovesFollowers"] || false
|
locked = data["manuallyApprovesFollowers"] || false
|
||||||
|
accepts_chat_messages = data["acceptsChatMessages"]
|
||||||
data = Transmogrifier.maybe_fix_user_object(data)
|
data = Transmogrifier.maybe_fix_user_object(data)
|
||||||
discoverable = data["discoverable"] || false
|
discoverable = data["discoverable"] || false
|
||||||
invisible = data["invisible"] || false
|
invisible = data["invisible"] || false
|
||||||
|
@ -1262,7 +1263,8 @@ defp object_to_user_data(data) do
|
||||||
also_known_as: Map.get(data, "alsoKnownAs", []),
|
also_known_as: Map.get(data, "alsoKnownAs", []),
|
||||||
public_key: public_key,
|
public_key: public_key,
|
||||||
inbox: data["inbox"],
|
inbox: data["inbox"],
|
||||||
shared_inbox: shared_inbox
|
shared_inbox: shared_inbox,
|
||||||
|
accepts_chat_messages: accepts_chat_messages
|
||||||
}
|
}
|
||||||
|
|
||||||
# nickname can be nil because of virtual actors
|
# nickname can be nil because of virtual actors
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
"summary": "\u003cp\u003e\u003c/p\u003e",
|
"summary": "\u003cp\u003e\u003c/p\u003e",
|
||||||
"url": "http://mastodon.example.org/@admin",
|
"url": "http://mastodon.example.org/@admin",
|
||||||
"manuallyApprovesFollowers": false,
|
"manuallyApprovesFollowers": false,
|
||||||
|
"acceptsChatMessages": true,
|
||||||
"publicKey": {
|
"publicKey": {
|
||||||
"id": "http://mastodon.example.org/users/admin#main-key",
|
"id": "http://mastodon.example.org/users/admin#main-key",
|
||||||
"owner": "http://mastodon.example.org/users/admin",
|
"owner": "http://mastodon.example.org/users/admin",
|
||||||
|
|
|
@ -184,38 +184,45 @@ test "it returns a user that is invisible" do
|
||||||
assert User.invisible?(user)
|
assert User.invisible?(user)
|
||||||
end
|
end
|
||||||
|
|
||||||
test "it fetches the appropriate tag-restricted posts" do
|
test "it returns a user that accepts chat messages" do
|
||||||
user = insert(:user)
|
user_id = "http://mastodon.example.org/users/admin"
|
||||||
|
{:ok, user} = ActivityPub.make_user_from_ap_id(user_id)
|
||||||
|
|
||||||
{:ok, status_one} = CommonAPI.post(user, %{status: ". #test"})
|
assert user.accepts_chat_messages
|
||||||
{:ok, status_two} = CommonAPI.post(user, %{status: ". #essais"})
|
|
||||||
{:ok, status_three} = CommonAPI.post(user, %{status: ". #test #reject"})
|
|
||||||
|
|
||||||
fetch_one = ActivityPub.fetch_activities([], %{type: "Create", tag: "test"})
|
|
||||||
|
|
||||||
fetch_two = ActivityPub.fetch_activities([], %{type: "Create", tag: ["test", "essais"]})
|
|
||||||
|
|
||||||
fetch_three =
|
|
||||||
ActivityPub.fetch_activities([], %{
|
|
||||||
type: "Create",
|
|
||||||
tag: ["test", "essais"],
|
|
||||||
tag_reject: ["reject"]
|
|
||||||
})
|
|
||||||
|
|
||||||
fetch_four =
|
|
||||||
ActivityPub.fetch_activities([], %{
|
|
||||||
type: "Create",
|
|
||||||
tag: ["test"],
|
|
||||||
tag_all: ["test", "reject"]
|
|
||||||
})
|
|
||||||
|
|
||||||
assert fetch_one == [status_one, status_three]
|
|
||||||
assert fetch_two == [status_one, status_two, status_three]
|
|
||||||
assert fetch_three == [status_one, status_two]
|
|
||||||
assert fetch_four == [status_three]
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "it fetches the appropriate tag-restricted posts" do
|
||||||
|
user = insert(:user)
|
||||||
|
|
||||||
|
{:ok, status_one} = CommonAPI.post(user, %{status: ". #test"})
|
||||||
|
{:ok, status_two} = CommonAPI.post(user, %{status: ". #essais"})
|
||||||
|
{:ok, status_three} = CommonAPI.post(user, %{status: ". #test #reject"})
|
||||||
|
|
||||||
|
fetch_one = ActivityPub.fetch_activities([], %{type: "Create", tag: "test"})
|
||||||
|
|
||||||
|
fetch_two = ActivityPub.fetch_activities([], %{type: "Create", tag: ["test", "essais"]})
|
||||||
|
|
||||||
|
fetch_three =
|
||||||
|
ActivityPub.fetch_activities([], %{
|
||||||
|
type: "Create",
|
||||||
|
tag: ["test", "essais"],
|
||||||
|
tag_reject: ["reject"]
|
||||||
|
})
|
||||||
|
|
||||||
|
fetch_four =
|
||||||
|
ActivityPub.fetch_activities([], %{
|
||||||
|
type: "Create",
|
||||||
|
tag: ["test"],
|
||||||
|
tag_all: ["test", "reject"]
|
||||||
|
})
|
||||||
|
|
||||||
|
assert fetch_one == [status_one, status_three]
|
||||||
|
assert fetch_two == [status_one, status_two, status_three]
|
||||||
|
assert fetch_three == [status_one, status_two]
|
||||||
|
assert fetch_four == [status_three]
|
||||||
|
end
|
||||||
|
|
||||||
describe "insertion" do
|
describe "insertion" do
|
||||||
test "drops activities beyond a certain limit" do
|
test "drops activities beyond a certain limit" do
|
||||||
limit = Config.get([:instance, :remote_limit])
|
limit = Config.get([:instance, :remote_limit])
|
||||||
|
|
Loading…
Reference in a new issue