Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
La Quadrature du Net
mamot
Commits
abb8f583
Commit
abb8f583
authored
Oct 23, 2016
by
Eugen Rochko
Browse files
Fix public channel
parent
a9e40a3d
Changes
5
Hide whitespace changes
Inline
Side-by-side
app/channels/public_channel.rb
View file @
abb8f583
# Be sure to restart your server when you modify this file. Action Cable runs in a loop that does not support auto reloading.
class
PublicChannel
<
ApplicationCable
::
Channel
def
subscribed
stream_from
'timeline:public'
,
lambda
do
|
encoded_message
|
stream_from
'timeline:public'
,
lambda
{
|
encoded_message
|
message
=
ActiveSupport
::
JSON
.
decode
(
encoded_message
)
status
=
Status
.
find_by
(
id:
message
[
'id'
])
...
...
@@ -10,7 +10,7 @@ class PublicChannel < ApplicationCable::Channel
message
[
'message'
]
=
FeedManager
.
instance
.
inline_render
(
current_user
.
account
,
status
)
transmit
message
end
}
end
def
unsubscribed
...
...
app/models/follow_suggestion.rb
View file @
abb8f583
class
FollowSuggestion
def
self
.
get
(
for_account_id
,
limit
=
10
)
neo
=
Neography
::
Rest
.
new
class
<<
self
def
get
(
for_account_id
,
limit
=
10
)
neo
=
Neography
::
Rest
.
new
query
=
<<
END
query
=
<<
END
START a=node:account_index(Account={id})
MATCH (a)-[:follows]->(b)-[:follows]->(c)
WHERE a <> c
...
...
@@ -12,30 +13,30 @@ ORDER BY count(b) DESC, c.nodeRank DESC
LIMIT {limit}
END
results
=
neo
.
execute_query
(
query
,
id:
for_account_id
,
limit:
limit
)
results
=
neo
.
execute_query
(
query
,
id:
for_account_id
,
limit:
limit
)
if
results
.
empty?
||
results
[
'data'
].
empty?
results
=
fallback
(
for_account_id
,
limit
)
elsif
results
[
'data'
].
size
<
limit
results
[
'data'
]
=
(
results
[
'data'
]
+
fallback
(
for_account_id
,
limit
-
results
[
'data'
].
size
)[
'data'
]).
uniq
end
if
results
.
empty?
||
results
[
'data'
].
empty?
results
=
fallback
(
for_account_id
,
limit
)
elsif
results
[
'data'
].
size
<
limit
results
[
'data'
]
=
(
results
[
'data'
]
+
fallback
(
for_account_id
,
limit
-
results
[
'data'
].
size
)[
'data'
]).
uniq
end
account_ids
=
results
[
'data'
].
map
(
&
:first
)
blocked_ids
=
Block
.
where
(
account_id:
for_account_id
).
pluck
(
:target_account_id
)
accounts_map
=
Account
.
where
(
id:
account_ids
-
blocked_ids
).
with_counters
.
map
{
|
a
|
[
a
.
id
,
a
]
}.
to_h
account_ids
=
results
[
'data'
].
map
(
&
:first
)
blocked_ids
=
Block
.
where
(
account_id:
for_account_id
).
pluck
(
:target_account_id
)
accounts_map
=
Account
.
where
(
id:
account_ids
-
blocked_ids
).
with_counters
.
map
{
|
a
|
[
a
.
id
,
a
]
}.
to_h
account_ids
.
map
{
|
id
|
accounts_map
[
id
]
}.
compact
rescue
Neography
::
NeographyError
,
Excon
::
Error
::
Socket
=>
e
Rails
.
logger
.
error
e
return
[]
end
account_ids
.
map
{
|
id
|
accounts_map
[
id
]
}.
compact
rescue
Neography
::
NeographyError
,
Excon
::
Error
::
Socket
=>
e
Rails
.
logger
.
error
e
return
[]
end
private
private
def
self
.
fallback
(
for_account_id
,
limit
)
neo
=
Neography
::
Rest
.
new
def
fallback
(
for_account_id
,
limit
)
neo
=
Neography
::
Rest
.
new
query
=
<<
END
query
=
<<
END
START a=node:account_index(Account={id})
MATCH (b)
WHERE a <> b
...
...
@@ -45,6 +46,7 @@ ORDER BY b.nodeRank DESC
LIMIT {limit}
END
neo
.
execute_query
(
query
,
id:
for_account_id
,
limit:
limit
)
neo
.
execute_query
(
query
,
id:
for_account_id
,
limit:
limit
)
end
end
end
app/models/media_attachment.rb
View file @
abb8f583
...
...
@@ -34,26 +34,28 @@ class MediaAttachment < ApplicationRecord
image?
?
'image'
:
'video'
end
private
def
self
.
file_styles
(
f
)
if
f
.
instance
.
image?
{
original:
'100%'
,
small:
'510x680>'
}
else
{
small:
{
convert_options:
{
output:
{
vf:
'scale=\'min(510\, iw):min(680\, ih)\':force_original_aspect_ratio=decrease'
}
},
format:
'png'
,
time:
1
class
<<
self
private
def
file_styles
(
f
)
if
f
.
instance
.
image?
{
original:
'100%'
,
small:
'510x680>'
}
}
else
{
small:
{
convert_options:
{
output:
{
vf:
'scale=\'min(510\, iw):min(680\, ih)\':force_original_aspect_ratio=decrease'
}
},
format:
'png'
,
time:
1
}
}
end
end
end
end
app/services/block_domain_service.rb
View file @
abb8f583
class
BlockDomainService
<
BaseService
def
call
(
domain
)
block
=
DomainBlock
.
find_or_create_by!
(
domain:
domain
)
DomainBlock
.
find_or_create_by!
(
domain:
domain
)
Account
.
where
(
domain:
domain
).
find_each
do
|
account
|
if
account
.
subscribed?
...
...
app/services/fetch_remote_account_service.rb
View file @
abb8f583
...
...
@@ -19,7 +19,7 @@ class FetchRemoteAccountService < BaseService
Rails
.
logger
.
debug
"Going to webfinger
#{
username
}
@
#{
domain
}
"
return
FollowRemoteAccountService
.
new
.
call
(
"
#{
username
}
@
#{
domain
}
"
)
rescue
TypeError
=>
e
rescue
TypeError
Rails
.
logger
.
debug
"Unparseable URL given:
#{
url
}
"
nil
rescue
Nokogiri
::
XML
::
XPath
::
SyntaxError
...
...
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