Skip to content
GitLab
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
375fd210
Commit
375fd210
authored
Apr 15, 2019
by
Eugenij
Browse files
Set correct values in the MastoAPI reblog status view
parent
2d54fdcd
Changes
4
Hide whitespace changes
Inline
Side-by-side
CHANGELOG.md
View file @
375fd210
...
...
@@ -73,6 +73,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
-
Mastodon API: Streaming API broadcasting wrong activity id
-
Mastodon API: 500 errors when requesting a card for a private conversation
-
Mastodon API: Handling of
`reblogs`
in
`/api/v1/accounts/:id/follow`
-
Mastodon API: Correct
`reblogged`
,
`favourited`
, and
`bookmarked`
values in the reblog status JSON
## [0.9.9999] - 2019-04-05
### Security
...
...
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
View file @
375fd210
...
...
@@ -338,7 +338,7 @@ def dm_timeline(%{assigns: %{user: user}} = conn, params) do
end
def
get_status
(%{
assigns:
%{
user:
user
}}
=
conn
,
%{
"id"
=>
id
})
do
with
%
Activity
{}
=
activity
<-
Activity
.
get_by_id
(
id
),
with
%
Activity
{}
=
activity
<-
Activity
.
get_by_id
_with_object
(
id
),
true
<-
Visibility
.
visible_for_user?
(
activity
,
user
)
do
conn
|>
put_view
(
StatusView
)
...
...
@@ -487,7 +487,8 @@ def delete_status(%{assigns: %{user: user}} = conn, %{"id" => id}) do
end
def
reblog_status
(%{
assigns:
%{
user:
user
}}
=
conn
,
%{
"id"
=>
ap_id_or_id
})
do
with
{
:ok
,
announce
,
_activity
}
<-
CommonAPI
.
repeat
(
ap_id_or_id
,
user
)
do
with
{
:ok
,
announce
,
_activity
}
<-
CommonAPI
.
repeat
(
ap_id_or_id
,
user
),
%
Activity
{}
=
announce
<-
Activity
.
normalize
(
announce
.
data
)
do
conn
|>
put_view
(
StatusView
)
|>
try_render
(
"status.json"
,
%{
activity:
announce
,
for:
user
,
as:
:activity
})
...
...
@@ -496,7 +497,7 @@ def reblog_status(%{assigns: %{user: user}} = conn, %{"id" => ap_id_or_id}) do
def
unreblog_status
(%{
assigns:
%{
user:
user
}}
=
conn
,
%{
"id"
=>
ap_id_or_id
})
do
with
{
:ok
,
_unannounce
,
%{
data:
%{
"id"
=>
id
}}}
<-
CommonAPI
.
unrepeat
(
ap_id_or_id
,
user
),
%
Activity
{}
=
activity
<-
Activity
.
get_create_by_object_ap_id
(
id
)
do
%
Activity
{}
=
activity
<-
Activity
.
get_create_by_object_ap_id
_with_object
(
id
)
do
conn
|>
put_view
(
StatusView
)
|>
try_render
(
"status.json"
,
%{
activity:
activity
,
for:
user
,
as:
:activity
})
...
...
lib/pleroma/web/mastodon_api/views/status_view.ex
View file @
375fd210
...
...
@@ -83,6 +83,10 @@ def render(
reblogged_activity
=
Activity
.
get_create_by_object_ap_id
(
object
)
reblogged
=
render
(
"status.json"
,
Map
.
put
(
opts
,
:activity
,
reblogged_activity
))
activity_object
=
Object
.
normalize
(
activity
)
favorited
=
opts
[
:for
]
&&
opts
[
:for
]
.
ap_id
in
(
activity_object
.
data
[
"likes"
]
||
[])
bookmarked
=
opts
[
:for
]
&&
activity_object
.
data
[
"id"
]
in
opts
[
:for
]
.
bookmarks
mentions
=
activity
.
recipients
|>
Enum
.
map
(
fn
ap_id
->
User
.
get_cached_by_ap_id
(
ap_id
)
end
)
...
...
@@ -103,8 +107,8 @@ def render(
replies_count:
0
,
favourites_count:
0
,
reblogged:
reblogged?
(
reblogged_activity
,
opts
[
:for
]),
favourited:
false
,
bookmarked:
false
,
favourited:
present?
(
favorited
)
,
bookmarked:
present?
(
bookmarked
)
,
muted:
false
,
pinned:
pinned?
(
activity
,
user
),
sensitive:
false
,
...
...
test/web/mastodon_api/mastodon_api_controller_test.exs
View file @
375fd210
...
...
@@ -1021,6 +1021,8 @@ test "reblogged status for another user", %{conn: conn} do
user1
=
insert
(
:user
)
user2
=
insert
(
:user
)
user3
=
insert
(
:user
)
CommonAPI
.
favorite
(
activity
.
id
,
user2
)
{
:ok
,
user2
}
=
User
.
bookmark
(
user2
,
activity
.
data
[
"object"
][
"id"
])
{
:ok
,
reblog_activity1
,
_object
}
=
CommonAPI
.
repeat
(
activity
.
id
,
user1
)
{
:ok
,
_
,
_object
}
=
CommonAPI
.
repeat
(
activity
.
id
,
user2
)
...
...
@@ -1031,7 +1033,9 @@ test "reblogged status for another user", %{conn: conn} do
assert
%{
"reblog"
=>
%{
"id"
=>
id
,
"reblogged"
=>
false
,
"reblogs_count"
=>
2
},
"reblogged"
=>
false
"reblogged"
=>
false
,
"favourited"
=>
false
,
"bookmarked"
=>
false
}
=
json_response
(
conn_res
,
200
)
conn_res
=
...
...
@@ -1041,7 +1045,9 @@ test "reblogged status for another user", %{conn: conn} do
assert
%{
"reblog"
=>
%{
"id"
=>
id
,
"reblogged"
=>
true
,
"reblogs_count"
=>
2
},
"reblogged"
=>
true
"reblogged"
=>
true
,
"favourited"
=>
true
,
"bookmarked"
=>
true
}
=
json_response
(
conn_res
,
200
)
assert
to_string
(
activity
.
id
)
==
id
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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