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
ca029f0b
Verified
Commit
ca029f0b
authored
Nov 24, 2018
by
Haelwenn
Browse files
Web.Streamer: Get unauthenticated statuses representation
parent
d388a991
Pipeline
#4658
canceled with stages
in 26 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/streamer.ex
View file @
ca029f0b
...
...
@@ -169,16 +169,33 @@ defp represent_update(%Activity{} = activity, %User{} = user) do
|>
Jason
.
encode!
()
end
defp
represent_update
(%
Activity
{}
=
activity
)
do
%{
event:
"update"
,
payload:
Pleroma
.
Web
.
MastodonAPI
.
StatusView
.
render
(
"status.json"
,
activity:
activity
)
|>
Jason
.
encode!
()
}
|>
Jason
.
encode!
()
end
def
push_to_socket
(
topics
,
topic
,
%
Activity
{
data:
%{
"type"
=>
"Announce"
}}
=
item
)
do
Enum
.
each
(
topics
[
topic
]
||
[],
fn
socket
->
# Get the current user so we have up-to-date blocks etc.
user
=
User
.
get_cached_by_ap_id
(
socket
.
assigns
[
:user
]
.
ap_id
)
blocks
=
user
.
info
[
"blocks"
]
||
[]
if
socket
.
assigns
[
:user
]
do
user
=
User
.
get_cached_by_ap_id
(
socket
.
assigns
[
:user
]
.
ap_id
)
blocks
=
user
.
info
[
"blocks"
]
||
[]
parent
=
Object
.
normalize
(
item
.
data
[
"object"
])
parent
=
Object
.
normalize
(
item
.
data
[
"object"
])
unless
is_nil
(
parent
)
or
item
.
actor
in
blocks
or
parent
.
data
[
"actor"
]
in
blocks
do
send
(
socket
.
transport_pid
,
{
:text
,
represent_update
(
item
,
user
)})
unless
is_nil
(
parent
)
or
item
.
actor
in
blocks
or
parent
.
data
[
"actor"
]
in
blocks
do
send
(
socket
.
transport_pid
,
{
:text
,
represent_update
(
item
,
user
)})
end
else
send
(
socket
.
transport_pid
,
{
:text
,
represent_update
(
item
)})
end
end
)
end
...
...
@@ -186,11 +203,15 @@ def push_to_socket(topics, topic, %Activity{data: %{"type" => "Announce"}} = ite
def
push_to_socket
(
topics
,
topic
,
item
)
do
Enum
.
each
(
topics
[
topic
]
||
[],
fn
socket
->
# Get the current user so we have up-to-date blocks etc.
user
=
User
.
get_cached_by_ap_id
(
socket
.
assigns
[
:user
]
.
ap_id
)
blocks
=
user
.
info
[
"blocks"
]
||
[]
unless
item
.
actor
in
blocks
do
send
(
socket
.
transport_pid
,
{
:text
,
represent_update
(
item
,
user
)})
if
socket
.
assigns
[
:user
]
do
user
=
User
.
get_cached_by_ap_id
(
socket
.
assigns
[
:user
]
.
ap_id
)
blocks
=
user
.
info
[
"blocks"
]
||
[]
unless
item
.
actor
in
blocks
do
send
(
socket
.
transport_pid
,
{
:text
,
represent_update
(
item
,
user
)})
end
else
send
(
socket
.
transport_pid
,
{
:text
,
represent_update
(
item
)})
end
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