Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Pleroma
pleroma
Commits
687db1bc
Commit
687db1bc
authored
Apr 18, 2018
by
normandy
Browse files
Expose unannounce activity so that it can be tested
parent
0251690e
Changes
4
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/activity_pub/activity_pub.ex
View file @
687db1bc
...
...
@@ -142,11 +142,11 @@ def announce(
def
unannounce
(%
User
{}
=
actor
,
%
Object
{}
=
object
,
local
\\
true
)
do
with
%
Activity
{}
=
activity
<-
get_existing_announce
(
actor
.
ap_id
,
object
),
unannounce_data
<-
make_unannounce_data
(
actor
,
activity
),
{
:ok
,
_
unannounce_activity
}
<-
insert
(
unannounce_data
,
local
),
unannounce_data
<-
make_unannounce_data
(
actor
,
object
),
{
:ok
,
unannounce_activity
}
<-
insert
(
unannounce_data
,
local
),
{
:ok
,
_activity
}
<-
Repo
.
delete
(
activity
),
{
:ok
,
object
}
<-
remove_announce_from_object
(
activity
,
object
)
do
{
:ok
,
object
}
{
:ok
,
unannounce_activity
,
object
}
else
_e
->
{
:ok
,
object
}
end
...
...
lib/pleroma/web/activity_pub/utils.ex
View file @
687db1bc
...
...
@@ -283,13 +283,13 @@ def make_announce_data(
"""
def
make_unannounce_data
(
%
User
{
ap_id:
ap_id
}
=
user
,
%
Activity
{
data:
%{
"id"
=>
id
,
"context"
=>
context
}}
=
activity
%
Object
{
data:
%{
"id"
=>
id
,
"context"
=>
context
}}
=
object
)
do
%{
"type"
=>
"Undo"
,
"actor"
=>
ap_id
,
"object"
=>
id
,
"to"
=>
[
user
.
follower_address
,
activity
.
data
[
"actor"
]],
"to"
=>
[
user
.
follower_address
,
object
.
data
[
"actor"
]],
"cc"
=>
[
"https://www.w3.org/ns/activitystreams#Public"
],
"context"
=>
context
}
...
...
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
View file @
687db1bc
...
...
@@ -297,7 +297,7 @@ def reblog_status(%{assigns: %{user: user}} = conn, %{"id" => ap_id_or_id}) do
end
def
unreblog_status
(%{
assigns:
%{
user:
user
}}
=
conn
,
%{
"id"
=>
ap_id_or_id
})
do
with
{
:ok
,
%{
data:
%{
"id"
=>
id
}}}
=
CommonAPI
.
unrepeat
(
ap_id_or_id
,
user
),
with
{
:ok
,
_
,
%{
data:
%{
"id"
=>
id
}}}
=
CommonAPI
.
unrepeat
(
ap_id_or_id
,
user
),
%
Activity
{}
=
activity
<-
Activity
.
get_create_activity_by_object_ap_id
(
id
)
do
render
(
conn
,
StatusView
,
"status.json"
,
%{
activity:
activity
,
for:
user
,
as:
:activity
})
end
...
...
test/web/activity_pub/activity_pub_test.exs
View file @
687db1bc
...
...
@@ -278,15 +278,24 @@ test "unannouncing a previously announced object" do
user
=
insert
(
:user
)
# Unannouncing an object that is not announced does nothing
{
:ok
,
object
}
=
ActivityPub
.
unannounce
(
user
,
object
)
assert
object
.
data
[
"announcement_count"
]
==
0
#
{:ok, object} = ActivityPub.unannounce(user, object)
#
assert object.data["announcement_count"] == 0
{
:ok
,
announce_activity
,
object
}
=
ActivityPub
.
announce
(
user
,
object
)
assert
object
.
data
[
"announcement_count"
]
==
1
{
:ok
,
object
}
=
ActivityPub
.
unannounce
(
user
,
object
)
{
:ok
,
unannounce_activity
,
object
}
=
ActivityPub
.
unannounce
(
user
,
object
)
assert
object
.
data
[
"announcement_count"
]
==
0
assert
unannounce_activity
.
data
[
"to"
]
==
[
User
.
ap_followers
(
user
),
note_activity
.
data
[
"actor"
]
]
assert
unannounce_activity
.
data
[
"type"
]
==
"Undo"
assert
unannounce_activity
.
data
[
"object"
]
==
object
.
data
[
"id"
]
assert
unannounce_activity
.
data
[
"actor"
]
==
user
.
ap_id
assert
unannounce_activity
.
data
[
"context"
]
==
object
.
data
[
"context"
]
assert
Repo
.
get
(
Activity
,
announce_activity
.
id
)
==
nil
end
end
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment