Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
pleroma
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
405
Issues
405
List
Boards
Labels
Service Desk
Milestones
Merge Requests
59
Merge Requests
59
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Pleroma
pleroma
Commits
2430b9bf
Commit
2430b9bf
authored
Apr 24, 2020
by
lain
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/remove-unused-like-code' into 'develop'
ActivitPub: Remove `like` function. See merge request
!2422
parents
1b5f8d19
1df6af2a
Pipeline
#24810
passed with stages
in 48 minutes and 57 seconds
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
15 additions
and
104 deletions
+15
-104
lib/pleroma/web/activity_pub/activity_pub.ex
lib/pleroma/web/activity_pub/activity_pub.ex
+0
-30
lib/pleroma/web/activity_pub/activity_pub_controller.ex
lib/pleroma/web/activity_pub/activity_pub_controller.ex
+6
-1
test/web/activity_pub/activity_pub_test.exs
test/web/activity_pub/activity_pub_test.exs
+7
-70
test/web/activity_pub/utils_test.exs
test/web/activity_pub/utils_test.exs
+2
-3
No files found.
lib/pleroma/web/activity_pub/activity_pub.ex
View file @
2430b9bf
...
...
@@ -398,36 +398,6 @@ defp do_unreact_with_emoji(user, reaction_id, options) do
end
end
# TODO: This is weird, maybe we shouldn't check here if we can make the activity.
@spec
like
(
User
.
t
(),
Object
.
t
(),
String
.
t
()
|
nil
,
boolean
())
::
{
:ok
,
Activity
.
t
(),
Object
.
t
()}
|
{
:error
,
any
()}
def
like
(
user
,
object
,
activity_id
\\
nil
,
local
\\
true
)
do
with
{
:ok
,
result
}
<-
Repo
.
transaction
(
fn
->
do_like
(
user
,
object
,
activity_id
,
local
)
end
)
do
result
end
end
defp
do_like
(
%
User
{
ap_id:
ap_id
}
=
user
,
%
Object
{
data:
%{
"id"
=>
_
}}
=
object
,
activity_id
,
local
)
do
with
nil
<-
get_existing_like
(
ap_id
,
object
),
like_data
<-
make_like_data
(
user
,
object
,
activity_id
),
{
:ok
,
activity
}
<-
insert
(
like_data
,
local
),
{
:ok
,
object
}
<-
add_like_to_object
(
activity
,
object
),
:ok
<-
maybe_federate
(
activity
)
do
{
:ok
,
activity
,
object
}
else
%
Activity
{}
=
activity
->
{
:ok
,
activity
,
object
}
{
:error
,
error
}
->
Repo
.
rollback
(
error
)
end
end
@spec
unlike
(
User
.
t
(),
Object
.
t
(),
String
.
t
()
|
nil
,
boolean
())
::
{
:ok
,
Activity
.
t
(),
Activity
.
t
(),
Object
.
t
()}
|
{
:ok
,
Object
.
t
()}
|
{
:error
,
any
()}
def
unlike
(%
User
{}
=
actor
,
%
Object
{}
=
object
,
activity_id
\\
nil
,
local
\\
true
)
do
...
...
lib/pleroma/web/activity_pub/activity_pub_controller.ex
View file @
2430b9bf
...
...
@@ -12,8 +12,10 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do
alias
Pleroma
.
Plugs
.
EnsureAuthenticatedPlug
alias
Pleroma
.
User
alias
Pleroma
.
Web
.
ActivityPub
.
ActivityPub
alias
Pleroma
.
Web
.
ActivityPub
.
Builder
alias
Pleroma
.
Web
.
ActivityPub
.
InternalFetchActor
alias
Pleroma
.
Web
.
ActivityPub
.
ObjectView
alias
Pleroma
.
Web
.
ActivityPub
.
Pipeline
alias
Pleroma
.
Web
.
ActivityPub
.
Relay
alias
Pleroma
.
Web
.
ActivityPub
.
Transmogrifier
alias
Pleroma
.
Web
.
ActivityPub
.
UserView
...
...
@@ -421,7 +423,10 @@ defp handle_user_activity(%User{} = user, %{"type" => "Delete"} = params) do
defp
handle_user_activity
(%
User
{}
=
user
,
%{
"type"
=>
"Like"
}
=
params
)
do
with
%
Object
{}
=
object
<-
Object
.
normalize
(
params
[
"object"
]),
{
:ok
,
activity
,
_object
}
<-
ActivityPub
.
like
(
user
,
object
)
do
{
_
,
{
:ok
,
like_object
,
meta
}}
<-
{
:build_object
,
Builder
.
like
(
user
,
object
)},
{
_
,
{
:ok
,
%
Activity
{}
=
activity
,
_meta
}}
<-
{
:common_pipeline
,
Pipeline
.
common_pipeline
(
like_object
,
Keyword
.
put
(
meta
,
:local
,
true
))}
do
{
:ok
,
activity
}
else
_
->
{
:error
,
dgettext
(
"errors"
,
"Can't like object"
)}
...
...
test/web/activity_pub/activity_pub_test.exs
View file @
2430b9bf
...
...
@@ -994,72 +994,6 @@ test "reverts emoji unreact on error" do
end
end
describe
"like an object"
do
test_with_mock
"sends an activity to federation"
,
Federator
,
[
:passthrough
],
[]
do
Config
.
put
([
:instance
,
:federating
],
true
)
note_activity
=
insert
(
:note_activity
)
assert
object_activity
=
Object
.
normalize
(
note_activity
)
user
=
insert
(
:user
)
{
:ok
,
like_activity
,
_object
}
=
ActivityPub
.
like
(
user
,
object_activity
)
assert
called
(
Federator
.
publish
(
like_activity
))
end
test
"returns exist activity if object already liked"
do
note_activity
=
insert
(
:note_activity
)
assert
object_activity
=
Object
.
normalize
(
note_activity
)
user
=
insert
(
:user
)
{
:ok
,
like_activity
,
_object
}
=
ActivityPub
.
like
(
user
,
object_activity
)
{
:ok
,
like_activity_exist
,
_object
}
=
ActivityPub
.
like
(
user
,
object_activity
)
assert
like_activity
==
like_activity_exist
end
test
"reverts like activity on error"
do
note_activity
=
insert
(
:note_activity
)
object
=
Object
.
normalize
(
note_activity
)
user
=
insert
(
:user
)
with_mock
(
Utils
,
[
:passthrough
],
maybe_federate:
fn
_
->
{
:error
,
:reverted
}
end
)
do
assert
{
:error
,
:reverted
}
=
ActivityPub
.
like
(
user
,
object
)
end
assert
Repo
.
aggregate
(
Activity
,
:count
,
:id
)
==
1
assert
Repo
.
get
(
Object
,
object
.
id
)
==
object
end
test
"adds a like activity to the db"
do
note_activity
=
insert
(
:note_activity
)
assert
object
=
Object
.
normalize
(
note_activity
)
user
=
insert
(
:user
)
user_two
=
insert
(
:user
)
{
:ok
,
like_activity
,
object
}
=
ActivityPub
.
like
(
user
,
object
)
assert
like_activity
.
data
[
"actor"
]
==
user
.
ap_id
assert
like_activity
.
data
[
"type"
]
==
"Like"
assert
like_activity
.
data
[
"object"
]
==
object
.
data
[
"id"
]
assert
like_activity
.
data
[
"to"
]
==
[
User
.
ap_followers
(
user
),
note_activity
.
data
[
"actor"
]]
assert
like_activity
.
data
[
"context"
]
==
object
.
data
[
"context"
]
assert
object
.
data
[
"like_count"
]
==
1
assert
object
.
data
[
"likes"
]
==
[
user
.
ap_id
]
# Just return the original activity if the user already liked it.
{
:ok
,
same_like_activity
,
object
}
=
ActivityPub
.
like
(
user
,
object
)
assert
like_activity
==
same_like_activity
assert
object
.
data
[
"likes"
]
==
[
user
.
ap_id
]
assert
object
.
data
[
"like_count"
]
==
1
{
:ok
,
_like_activity
,
object
}
=
ActivityPub
.
like
(
user_two
,
object
)
assert
object
.
data
[
"like_count"
]
==
2
end
end
describe
"unliking"
do
test_with_mock
"sends an activity to federation"
,
Federator
,
[
:passthrough
],
[]
do
Config
.
put
([
:instance
,
:federating
],
true
)
...
...
@@ -1071,7 +1005,8 @@ test "adds a like activity to the db" do
{
:ok
,
object
}
=
ActivityPub
.
unlike
(
user
,
object
)
refute
called
(
Federator
.
publish
())
{
:ok
,
_like_activity
,
object
}
=
ActivityPub
.
like
(
user
,
object
)
{
:ok
,
_like_activity
}
=
CommonAPI
.
favorite
(
user
,
note_activity
.
id
)
object
=
Object
.
get_by_id
(
object
.
id
)
assert
object
.
data
[
"like_count"
]
==
1
{
:ok
,
unlike_activity
,
_
,
object
}
=
ActivityPub
.
unlike
(
user
,
object
)
...
...
@@ -1082,10 +1017,10 @@ test "adds a like activity to the db" do
test
"reverts unliking on error"
do
note_activity
=
insert
(
:note_activity
)
object
=
Object
.
normalize
(
note_activity
)
user
=
insert
(
:user
)
{
:ok
,
like_activity
,
object
}
=
ActivityPub
.
like
(
user
,
object
)
{
:ok
,
like_activity
}
=
CommonAPI
.
favorite
(
user
,
note_activity
.
id
)
object
=
Object
.
normalize
(
note_activity
)
assert
object
.
data
[
"like_count"
]
==
1
with_mock
(
Utils
,
[
:passthrough
],
maybe_federate:
fn
_
->
{
:error
,
:reverted
}
end
)
do
...
...
@@ -1106,7 +1041,9 @@ test "unliking a previously liked object" do
{
:ok
,
object
}
=
ActivityPub
.
unlike
(
user
,
object
)
assert
object
.
data
[
"like_count"
]
==
0
{
:ok
,
like_activity
,
object
}
=
ActivityPub
.
like
(
user
,
object
)
{
:ok
,
like_activity
}
=
CommonAPI
.
favorite
(
user
,
note_activity
.
id
)
object
=
Object
.
get_by_id
(
object
.
id
)
assert
object
.
data
[
"like_count"
]
==
1
{
:ok
,
unlike_activity
,
_
,
object
}
=
ActivityPub
.
unlike
(
user
,
object
)
...
...
test/web/activity_pub/utils_test.exs
View file @
2430b9bf
...
...
@@ -224,8 +224,7 @@ test "fetches only Create activities" do
object
=
Object
.
normalize
(
activity
)
{
:ok
,
[
vote
],
object
}
=
CommonAPI
.
vote
(
other_user
,
object
,
[
0
])
vote_object
=
Object
.
normalize
(
vote
)
{
:ok
,
_activity
,
_object
}
=
ActivityPub
.
like
(
user
,
vote_object
)
{
:ok
,
_activity
}
=
CommonAPI
.
favorite
(
user
,
activity
.
id
)
[
fetched_vote
]
=
Utils
.
get_existing_votes
(
other_user
.
ap_id
,
object
)
assert
fetched_vote
.
id
==
vote
.
id
end
...
...
@@ -346,7 +345,7 @@ test "fetches existing like" do
user
=
insert
(
:user
)
refute
Utils
.
get_existing_like
(
user
.
ap_id
,
object
)
{
:ok
,
like_activity
,
_object
}
=
ActivityPub
.
like
(
user
,
object
)
{
:ok
,
like_activity
}
=
CommonAPI
.
favorite
(
user
,
note_activity
.
id
)
assert
^
like_activity
=
Utils
.
get_existing_like
(
user
.
ap_id
,
object
)
end
...
...
Write
Preview
Markdown
is supported
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