Merge commit '82e477b184b5666fff7fb55933dce22ca2925db8' into glitch-soc/merge-upstream
Conflicts: - `db/migrate/20180831171112_create_bookmarks.rb`: Upstream ran a lint fix on this file, but this file is different in glitch-soc because the feature was added much earlier. Ran the lint fix on our own version of the file.
This commit is contained in:
@@ -21,7 +21,7 @@ class Api::V1::BookmarksController < Api::BaseController
|
||||
end
|
||||
|
||||
def results
|
||||
@_results ||= account_bookmarks.joins(:status).eager_load(:status).to_a_paginated_by_id(
|
||||
@results ||= account_bookmarks.joins(:status).eager_load(:status).to_a_paginated_by_id(
|
||||
limit_param(DEFAULT_STATUSES_LIMIT),
|
||||
params_slice(:max_id, :since_id, :min_id)
|
||||
)
|
||||
|
@@ -21,7 +21,7 @@ class Api::V1::FavouritesController < Api::BaseController
|
||||
end
|
||||
|
||||
def results
|
||||
@_results ||= account_favourites.joins(:status).eager_load(:status).to_a_paginated_by_id(
|
||||
@results ||= account_favourites.joins(:status).eager_load(:status).to_a_paginated_by_id(
|
||||
limit_param(DEFAULT_STATUSES_LIMIT),
|
||||
params_slice(:max_id, :since_id, :min_id)
|
||||
)
|
||||
|
@@ -129,7 +129,7 @@ class Auth::SessionsController < Devise::SessionsController
|
||||
redirect_to new_user_session_path, alert: I18n.t('devise.failure.timeout')
|
||||
end
|
||||
|
||||
def set_attempt_session(user)
|
||||
def register_attempt_in_session(user)
|
||||
session[:attempt_user_id] = user.id
|
||||
session[:attempt_user_updated_at] = user.updated_at.to_s
|
||||
end
|
||||
|
@@ -61,7 +61,7 @@ module RateLimitHeaders
|
||||
end
|
||||
|
||||
def request_time
|
||||
@_request_time ||= Time.now.utc
|
||||
@request_time ||= Time.now.utc
|
||||
end
|
||||
|
||||
def reset_period_offset
|
||||
|
@@ -75,7 +75,7 @@ module TwoFactorAuthenticationConcern
|
||||
end
|
||||
|
||||
def prompt_for_two_factor(user)
|
||||
set_attempt_session(user)
|
||||
register_attempt_in_session(user)
|
||||
|
||||
use_pack 'auth'
|
||||
|
||||
|
@@ -541,7 +541,7 @@ ul.rules-list {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation: landscape) {
|
||||
@media only screen and (device-width >= 768px) and (device-width <= 1024px) and (orientation: landscape) {
|
||||
body {
|
||||
min-height: 1024px !important;
|
||||
}
|
||||
|
@@ -143,11 +143,11 @@ class ActivityPub::Activity
|
||||
end
|
||||
|
||||
def follow_request_from_object
|
||||
@follow_request ||= FollowRequest.find_by(target_account: @account, uri: object_uri) unless object_uri.nil?
|
||||
@follow_request_from_object ||= FollowRequest.find_by(target_account: @account, uri: object_uri) unless object_uri.nil?
|
||||
end
|
||||
|
||||
def follow_from_object
|
||||
@follow ||= ::Follow.find_by(target_account: @account, uri: object_uri) unless object_uri.nil?
|
||||
@follow_from_object ||= ::Follow.find_by(target_account: @account, uri: object_uri) unless object_uri.nil?
|
||||
end
|
||||
|
||||
def fetch_remote_original_status
|
||||
|
@@ -53,7 +53,7 @@ class EmojiFormatter
|
||||
end
|
||||
end
|
||||
|
||||
result << Nokogiri::XML::Text.new(text[last_index..-1], tree.document)
|
||||
result << Nokogiri::XML::Text.new(text[last_index..], tree.document)
|
||||
node.replace(result)
|
||||
end
|
||||
|
||||
|
@@ -57,8 +57,8 @@ class TextFormatter
|
||||
|
||||
prefix = url.match(URL_PREFIX_REGEX).to_s
|
||||
display_url = url[prefix.length, 30]
|
||||
suffix = url[prefix.length + 30..-1]
|
||||
cutoff = url[prefix.length..-1].length > 30
|
||||
suffix = url[prefix.length + 30..]
|
||||
cutoff = url[prefix.length..].length > 30
|
||||
|
||||
<<~HTML.squish.html_safe # rubocop:disable Rails/OutputSafety
|
||||
<a href="#{h(url)}" target="_blank" rel="#{rel.join(' ')}" translate="no"><span class="invisible">#{h(prefix)}</span><span class="#{cutoff ? 'ellipsis' : ''}">#{h(display_url)}</span><span class="invisible">#{h(suffix)}</span></a>
|
||||
@@ -84,7 +84,7 @@ class TextFormatter
|
||||
indices.last
|
||||
end
|
||||
|
||||
result << h(text[last_index..-1])
|
||||
result << h(text[last_index..])
|
||||
|
||||
result
|
||||
end
|
||||
|
@@ -25,7 +25,7 @@ class AccountAlias < ApplicationRecord
|
||||
|
||||
def acct=(val)
|
||||
val = val.to_s.strip
|
||||
super(val.start_with?('@') ? val[1..-1] : val)
|
||||
super(val.start_with?('@') ? val[1..] : val)
|
||||
end
|
||||
|
||||
def pretty_acct
|
||||
|
@@ -69,7 +69,7 @@ class DomainBlock < ApplicationRecord
|
||||
|
||||
uri = Addressable::URI.new.tap { |u| u.host = domain.strip.delete('/') }
|
||||
segments = uri.normalized_host.split('.')
|
||||
variants = segments.map.with_index { |_, i| segments[i..-1].join('.') }
|
||||
variants = segments.map.with_index { |_, i| segments[i..].join('.') }
|
||||
|
||||
where(domain: variants).order(Arel.sql('char_length(domain) desc')).first
|
||||
rescue Addressable::URI::InvalidURIError, IDN::Idna::IdnaError
|
||||
|
@@ -64,7 +64,7 @@ class EmailDomainBlock < ApplicationRecord
|
||||
|
||||
segments = uri.normalized_host.split('.')
|
||||
|
||||
segments.map.with_index { |_, i| segments[i..-1].join('.') }
|
||||
segments.map.with_index { |_, i| segments[i..].join('.') }
|
||||
end
|
||||
end
|
||||
|
||||
|
@@ -54,6 +54,6 @@ class PreviewCardProvider < ApplicationRecord
|
||||
|
||||
def self.matching_domain(domain)
|
||||
segments = domain.split('.')
|
||||
where(domain: segments.map.with_index { |_, i| segments[i..-1].join('.') }).order(Arel.sql('char_length(domain) desc')).first
|
||||
where(domain: segments.map.with_index { |_, i| segments[i..].join('.') }).order(Arel.sql('char_length(domain) desc')).first
|
||||
end
|
||||
end
|
||||
|
@@ -68,12 +68,10 @@ class Trends::Query
|
||||
alias to_a to_ary
|
||||
|
||||
def to_arel
|
||||
tmp_ids = ids
|
||||
|
||||
if tmp_ids.empty?
|
||||
if ids_for_key.empty?
|
||||
klass.none
|
||||
else
|
||||
scope = klass.joins("join unnest(array[#{tmp_ids.join(',')}]) with ordinality as x (id, ordering) on #{klass.table_name}.id = x.id").reorder('x.ordering')
|
||||
scope = klass.joins(sanitized_join_sql).reorder('x.ordering')
|
||||
scope = scope.offset(@offset) if @offset.present?
|
||||
scope = scope.limit(@limit) if @limit.present?
|
||||
scope
|
||||
@@ -95,8 +93,22 @@ class Trends::Query
|
||||
self
|
||||
end
|
||||
|
||||
def ids
|
||||
redis.zrevrange(key, 0, -1).map(&:to_i)
|
||||
def ids_for_key
|
||||
@ids_for_key ||= redis.zrevrange(key, 0, -1).map(&:to_i)
|
||||
end
|
||||
|
||||
def sanitized_join_sql
|
||||
ActiveRecord::Base.sanitize_sql_array(join_sql_array)
|
||||
end
|
||||
|
||||
def join_sql_array
|
||||
[join_sql_query, ids_for_key]
|
||||
end
|
||||
|
||||
def join_sql_query
|
||||
<<~SQL.squish
|
||||
JOIN unnest(array[?]) WITH ordinality AS x (id, ordering) ON #{klass.table_name}.id = x.id
|
||||
SQL
|
||||
end
|
||||
|
||||
def perform_queries
|
||||
|
@@ -63,7 +63,7 @@ class ResolveURLService < BaseService
|
||||
end
|
||||
|
||||
def fetch_resource_service
|
||||
@_fetch_resource_service ||= FetchResourceService.new
|
||||
@fetch_resource_service ||= FetchResourceService.new
|
||||
end
|
||||
|
||||
def resource_url
|
||||
|
@@ -82,7 +82,7 @@ class SearchService < BaseService
|
||||
end
|
||||
|
||||
def url_resource
|
||||
@_url_resource ||= ResolveURLService.new.call(@query, on_behalf_of: @account)
|
||||
@url_resource ||= ResolveURLService.new.call(@query, on_behalf_of: @account)
|
||||
end
|
||||
|
||||
def url_resource_symbol
|
||||
|
@@ -53,7 +53,7 @@ class StatusLengthValidator < ActiveModel::Validator
|
||||
entity[:indices].last
|
||||
end
|
||||
|
||||
result << str[last_index..-1]
|
||||
result << str[last_index..]
|
||||
result
|
||||
end
|
||||
end
|
||||
|
@@ -1,3 +1,5 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
RSS::Builder.build do |doc|
|
||||
doc.title(display_name(@account))
|
||||
doc.description(I18n.t('rss.descriptions.account', acct: @account.local_username_and_domain))
|
||||
|
@@ -1,3 +1,5 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
RSS::Builder.build do |doc|
|
||||
doc.title("##{@tag.display_name}")
|
||||
doc.description(I18n.t('rss.descriptions.tag', hashtag: @tag.display_name))
|
||||
|
@@ -1,3 +1,5 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
doc = Ox::Document.new(version: '1.0')
|
||||
|
||||
doc << Ox::Element.new('XRD').tap do |xrd|
|
||||
|
Reference in New Issue
Block a user