Skip to content
Extraits de code Groupes Projets
Valider abb8f583 rédigé par Eugen Rochko's avatar Eugen Rochko
Parcourir les fichiers

Fix public channel

parent a9e40a3d
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# 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
......
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
......@@ -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
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?
......
......@@ -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
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter