From e20895f251d28b3631b1f5768302517a5b687b04 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 5 Dec 2017 23:02:27 +0100 Subject: Add list of lists component to web UI (#5811) * Add list of lists component to web UI * Add list adding * Add list removing * List editor modal * Add API account search limited by following=true relation * Rework list editor modal * Remove mandatory pagination of GET /api/v1/lists/:id/accounts * Adjust search input placeholder * Fix rspec (#5890) * i18n: (zh-CN) Add missing translations for #5811 (#5891) * i18n: (zh-CN) yarn manage:translations -- zh-CN * i18n: (zh-CN) Add missing translations for #5811 * Fix some issues - Display loading/missing state for list timelines - Order lists alphabetically in overview - Fix async list editor reset - Redirect to /lists after deleting unpinned list - Redirect to / after pinning a list * Remove dead list columns when a list is deleted or fetch returns 404 --- app/services/account_search_service.rb | 14 +++++++------- app/services/search_service.rb | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'app/services') diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index b0c663d02..ce25c3620 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -1,12 +1,12 @@ # frozen_string_literal: true class AccountSearchService < BaseService - attr_reader :query, :limit, :resolve, :account + attr_reader :query, :limit, :options, :account - def call(query, limit, resolve = false, account = nil) - @query = query - @limit = limit - @resolve = resolve + def call(query, limit, account = nil, options = {}) + @query = query + @limit = limit + @options = options @account = account search_service_results @@ -25,7 +25,7 @@ class AccountSearchService < BaseService end def resolving_non_matching_remote_account? - resolve && !exact_match && !domain_is_local? + options[:resolve] && !exact_match && !domain_is_local? end def search_results_and_exact_match @@ -79,7 +79,7 @@ class AccountSearchService < BaseService end def advanced_search_results - Account.advanced_search_for(terms_for_query, account, limit) + Account.advanced_search_for(terms_for_query, account, limit, options[:following]) end def simple_search_results diff --git a/app/services/search_service.rb b/app/services/search_service.rb index 1ed3f0032..85ad94463 100644 --- a/app/services/search_service.rb +++ b/app/services/search_service.rb @@ -10,7 +10,7 @@ class SearchService < BaseService if url_query? results.merge!(remote_resource_results) unless remote_resource.nil? elsif query.present? - results[:accounts] = AccountSearchService.new.call(query, limit, resolve, account) + results[:accounts] = AccountSearchService.new.call(query, limit, account, resolve: resolve) results[:hashtags] = Tag.search_for(query.gsub(/\A#/, ''), limit) unless query.start_with?('@') end end -- cgit From b21db9bbde3784556a5861e2cdec0c8c2184c72e Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Wed, 6 Dec 2017 19:41:57 +0900 Subject: Using double splat operator (#5859) --- app/controllers/api/v1/accounts_controller.rb | 2 +- app/helpers/admin/filter_helper.rb | 2 +- app/helpers/application_helper.rb | 2 +- app/helpers/routing_helper.rb | 2 +- app/lib/activitypub/activity.rb | 4 ++-- app/lib/extractor.rb | 2 +- app/lib/formatter.rb | 2 +- app/lib/ostatus/activity/base.rb | 2 +- app/lib/ostatus/atom_serializer.rb | 2 +- app/lib/provider_discovery.rb | 2 +- app/lib/request.rb | 2 +- app/mailers/notification_mailer.rb | 2 +- app/mailers/user_mailer.rb | 6 +++--- app/models/remote_follow.rb | 4 ++-- app/models/session_activation.rb | 2 +- app/presenters/account_relationships_presenter.rb | 2 +- app/presenters/status_relationships_presenter.rb | 2 +- app/services/activitypub/process_collection_service.rb | 2 +- app/services/authorize_follow_service.rb | 2 +- app/services/post_status_service.rb | 2 +- app/services/process_feed_service.rb | 2 +- app/services/remove_status_service.rb | 2 +- app/services/suspend_account_service.rb | 2 +- lib/mastodon/migration_helpers.rb | 8 ++++---- spec/services/post_status_service_spec.rb | 2 +- 25 files changed, 32 insertions(+), 32 deletions(-) (limited to 'app/services') diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb index b1a2ed573..4e73e9e8b 100644 --- a/app/controllers/api/v1/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -51,7 +51,7 @@ class Api::V1::AccountsController < Api::BaseController @account = Account.find(params[:id]) end - def relationships(options = {}) + def relationships(**options) AccountRelationshipsPresenter.new([@account.id], current_user.account_id, options) end end diff --git a/app/helpers/admin/filter_helper.rb b/app/helpers/admin/filter_helper.rb index 73250cbf5..9443934b3 100644 --- a/app/helpers/admin/filter_helper.rb +++ b/app/helpers/admin/filter_helper.rb @@ -13,7 +13,7 @@ module Admin::FilterHelper link_to text, new_url, class: filter_link_class(new_class) end - def table_link_to(icon, text, path, options = {}) + def table_link_to(icon, text, path, **options) link_to safe_join([fa_icon(icon), text]), path, options.merge(class: 'table-action-link') end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 7dfab1df1..8ed5c8bda 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -5,7 +5,7 @@ module ApplicationHelper current_page?(path) ? 'active' : '' end - def active_link_to(label, path, options = {}) + def active_link_to(label, path, **options) link_to label, path, options.merge(class: active_nav_class(path)) end diff --git a/app/helpers/routing_helper.rb b/app/helpers/routing_helper.rb index f4693358c..11894a895 100644 --- a/app/helpers/routing_helper.rb +++ b/app/helpers/routing_helper.rb @@ -11,7 +11,7 @@ module RoutingHelper end end - def full_asset_url(source, options = {}) + def full_asset_url(source, **options) source = ActionController::Base.helpers.asset_url(source, options) unless use_storage? URI.join(root_url, source).to_s diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb index 01144f595..820189d29 100644 --- a/app/lib/activitypub/activity.rb +++ b/app/lib/activitypub/activity.rb @@ -3,7 +3,7 @@ class ActivityPub::Activity include JsonLdHelper - def initialize(json, account, options = {}) + def initialize(json, account, **options) @json = json @account = account @object = @json['object'] @@ -15,7 +15,7 @@ class ActivityPub::Activity end class << self - def factory(json, account, options = {}) + def factory(json, account, **options) @json = json klass&.new(json, account, options) end diff --git a/app/lib/extractor.rb b/app/lib/extractor.rb index 738ec89a0..479689d60 100644 --- a/app/lib/extractor.rb +++ b/app/lib/extractor.rb @@ -32,7 +32,7 @@ module Extractor possible_entries end - def extract_hashtags_with_indices(text, _options = {}) + def extract_hashtags_with_indices(text, **) return [] unless text =~ /#/ tags = [] diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb index 9d8bc52db..f5bf64cc7 100644 --- a/app/lib/formatter.rb +++ b/app/lib/formatter.rb @@ -9,7 +9,7 @@ class Formatter include ActionView::Helpers::TextHelper - def format(status, options = {}) + def format(status, **options) if status.reblog? prepend_reblog = status.reblog.account.acct status = status.proper diff --git a/app/lib/ostatus/activity/base.rb b/app/lib/ostatus/activity/base.rb index 8b27b124f..c5933f3ad 100644 --- a/app/lib/ostatus/activity/base.rb +++ b/app/lib/ostatus/activity/base.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class OStatus::Activity::Base - def initialize(xml, account = nil, options = {}) + def initialize(xml, account = nil, **options) @xml = xml @account = account @options = options diff --git a/app/lib/ostatus/atom_serializer.rb b/app/lib/ostatus/atom_serializer.rb index 3ca6c5943..656e45822 100644 --- a/app/lib/ostatus/atom_serializer.rb +++ b/app/lib/ostatus/atom_serializer.rb @@ -319,7 +319,7 @@ class OStatus::AtomSerializer private - def append_element(parent, name, content = nil, attributes = {}) + def append_element(parent, name, content = nil, **attributes) element = Ox::Element.new(name) attributes.each { |k, v| element[k] = sanitize_str(v) } element << sanitize_str(content) unless content.nil? diff --git a/app/lib/provider_discovery.rb b/app/lib/provider_discovery.rb index 5e02e6806..bcc4ed500 100644 --- a/app/lib/provider_discovery.rb +++ b/app/lib/provider_discovery.rb @@ -2,7 +2,7 @@ class ProviderDiscovery < OEmbed::ProviderDiscovery class << self - def discover_provider(url, options = {}) + def discover_provider(url, **options) res = Request.new(:get, url).perform format = options[:format] diff --git a/app/lib/request.rb b/app/lib/request.rb index 30ea0e7ee..7671f4ffc 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -5,7 +5,7 @@ class Request include RoutingHelper - def initialize(verb, url, options = {}) + def initialize(verb, url, **options) @verb = verb @url = Addressable::URI.parse(url).normalize @options = options diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb index d79f26366..fd2b0649a 100644 --- a/app/mailers/notification_mailer.rb +++ b/app/mailers/notification_mailer.rb @@ -63,7 +63,7 @@ class NotificationMailer < ApplicationMailer end end - def digest(recipient, opts = {}) + def digest(recipient, **opts) @me = recipient @since = opts[:since] || @me.user.last_emailed_at || @me.user.current_sign_in_at @notifications = Notification.where(account: @me, activity_type: 'Mention').where('created_at > ?', @since) diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index bdb29ebad..5a062dc25 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -5,7 +5,7 @@ class UserMailer < Devise::Mailer helper :instance - def confirmation_instructions(user, token, _opts = {}) + def confirmation_instructions(user, token, **) @resource = user @token = token @instance = Rails.configuration.x.local_domain @@ -17,7 +17,7 @@ class UserMailer < Devise::Mailer end end - def reset_password_instructions(user, token, _opts = {}) + def reset_password_instructions(user, token, **) @resource = user @token = token @instance = Rails.configuration.x.local_domain @@ -29,7 +29,7 @@ class UserMailer < Devise::Mailer end end - def password_change(user, _opts = {}) + def password_change(user, **) @resource = user @instance = Rails.configuration.x.local_domain diff --git a/app/models/remote_follow.rb b/app/models/remote_follow.rb index c3f867743..070144e2d 100644 --- a/app/models/remote_follow.rb +++ b/app/models/remote_follow.rb @@ -7,8 +7,8 @@ class RemoteFollow validates :acct, presence: true - def initialize(attrs = {}) - @acct = attrs[:acct].gsub(/\A@/, '').strip unless attrs[:acct].nil? + def initialize(attrs = nil) + @acct = attrs[:acct].gsub(/\A@/, '').strip if !attrs.nil? && !attrs[:acct].nil? end def valid? diff --git a/app/models/session_activation.rb b/app/models/session_activation.rb index d19489b36..8b711d0d6 100644 --- a/app/models/session_activation.rb +++ b/app/models/session_activation.rb @@ -53,7 +53,7 @@ class SessionActivation < ApplicationRecord id && where(session_id: id).exists? end - def activate(options = {}) + def activate(**options) activation = create!(options) purge_old activation diff --git a/app/presenters/account_relationships_presenter.rb b/app/presenters/account_relationships_presenter.rb index a30558bac..bf1ba3716 100644 --- a/app/presenters/account_relationships_presenter.rb +++ b/app/presenters/account_relationships_presenter.rb @@ -4,7 +4,7 @@ class AccountRelationshipsPresenter attr_reader :following, :followed_by, :blocking, :muting, :requested, :domain_blocking - def initialize(account_ids, current_account_id, options = {}) + def initialize(account_ids, current_account_id, **options) @following = Account.following_map(account_ids, current_account_id).merge(options[:following_map] || {}) @followed_by = Account.followed_by_map(account_ids, current_account_id).merge(options[:followed_by_map] || {}) @blocking = Account.blocking_map(account_ids, current_account_id).merge(options[:blocking_map] || {}) diff --git a/app/presenters/status_relationships_presenter.rb b/app/presenters/status_relationships_presenter.rb index bc3887a44..b04e10e2f 100644 --- a/app/presenters/status_relationships_presenter.rb +++ b/app/presenters/status_relationships_presenter.rb @@ -3,7 +3,7 @@ class StatusRelationshipsPresenter attr_reader :reblogs_map, :favourites_map, :mutes_map, :pins_map - def initialize(statuses, current_account_id = nil, options = {}) + def initialize(statuses, current_account_id = nil, **options) if current_account_id.nil? @reblogs_map = {} @favourites_map = {} diff --git a/app/services/activitypub/process_collection_service.rb b/app/services/activitypub/process_collection_service.rb index db4d1b4bc..eb93329e9 100644 --- a/app/services/activitypub/process_collection_service.rb +++ b/app/services/activitypub/process_collection_service.rb @@ -3,7 +3,7 @@ class ActivityPub::ProcessCollectionService < BaseService include JsonLdHelper - def call(body, account, options = {}) + def call(body, account, **options) @account = account @json = Oj.load(body, mode: :strict) @options = options diff --git a/app/services/authorize_follow_service.rb b/app/services/authorize_follow_service.rb index b1bff8962..f47d488f1 100644 --- a/app/services/authorize_follow_service.rb +++ b/app/services/authorize_follow_service.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class AuthorizeFollowService < BaseService - def call(source_account, target_account, options = {}) + def call(source_account, target_account, **options) if options[:skip_follow_request] follow_request = FollowRequest.new(account: source_account, target_account: target_account) else diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb index de350f8e6..92d868afe 100644 --- a/app/services/post_status_service.rb +++ b/app/services/post_status_service.rb @@ -13,7 +13,7 @@ class PostStatusService < BaseService # @option [Doorkeeper::Application] :application # @option [String] :idempotency Optional idempotency key # @return [Status] - def call(account, text, in_reply_to = nil, options = {}) + def call(account, text, in_reply_to = nil, **options) if options[:idempotency].present? existing_id = redis.get("idempotency:status:#{account.id}:#{options[:idempotency]}") return Status.find(existing_id) if existing_id diff --git a/app/services/process_feed_service.rb b/app/services/process_feed_service.rb index 60eff135e..30a9dd85e 100644 --- a/app/services/process_feed_service.rb +++ b/app/services/process_feed_service.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class ProcessFeedService < BaseService - def call(body, account, options = {}) + def call(body, account, **options) @options = options xml = Nokogiri::XML(body) diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index 9f603bb36..a100f73ce 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -3,7 +3,7 @@ class RemoveStatusService < BaseService include StreamEntryRenderer - def call(status, options = {}) + def call(status, **options) @payload = Oj.dump(event: :delete, payload: status.id.to_s) @status = status @account = status.account diff --git a/app/services/suspend_account_service.rb b/app/services/suspend_account_service.rb index 5b37ba9ba..958b28cdc 100644 --- a/app/services/suspend_account_service.rb +++ b/app/services/suspend_account_service.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class SuspendAccountService < BaseService - def call(account, options = {}) + def call(account, **options) @account = account @options = options diff --git a/lib/mastodon/migration_helpers.rb b/lib/mastodon/migration_helpers.rb index 2b5a6cd42..6f6f99f63 100644 --- a/lib/mastodon/migration_helpers.rb +++ b/lib/mastodon/migration_helpers.rb @@ -99,7 +99,7 @@ module Mastodon # default - The default value for the column. # null - When set to `true` the column will allow NULL values. # The default is to not allow NULL values. - def add_timestamps_with_timezone(table_name, options = {}) + def add_timestamps_with_timezone(table_name, **options) options[:null] = false if options[:null].nil? [:created_at, :updated_at].each do |column_name| @@ -134,7 +134,7 @@ module Mastodon # add_concurrent_index :users, :some_column # # See Rails' `add_index` for more info on the available arguments. - def add_concurrent_index(table_name, column_name, options = {}) + def add_concurrent_index(table_name, column_name, **options) if transaction_open? raise 'add_concurrent_index can not be run inside a transaction, ' \ 'you can disable transactions by calling disable_ddl_transaction! ' \ @@ -158,7 +158,7 @@ module Mastodon # remove_concurrent_index :users, :some_column # # See Rails' `remove_index` for more info on the available arguments. - def remove_concurrent_index(table_name, column_name, options = {}) + def remove_concurrent_index(table_name, column_name, **options) if transaction_open? raise 'remove_concurrent_index can not be run inside a transaction, ' \ 'you can disable transactions by calling disable_ddl_transaction! ' \ @@ -182,7 +182,7 @@ module Mastodon # remove_concurrent_index :users, "index_X_by_Y" # # See Rails' `remove_index` for more info on the available arguments. - def remove_concurrent_index_by_name(table_name, index_name, options = {}) + def remove_concurrent_index_by_name(table_name, index_name, **options) if transaction_open? raise 'remove_concurrent_index_by_name can not be run inside a transaction, ' \ 'you can disable transactions by calling disable_ddl_transaction! ' \ diff --git a/spec/services/post_status_service_spec.rb b/spec/services/post_status_service_spec.rb index 91902ff69..92fbc73cd 100644 --- a/spec/services/post_status_service_spec.rb +++ b/spec/services/post_status_service_spec.rb @@ -182,7 +182,7 @@ RSpec.describe PostStatusService do expect(status2.id).to eq status1.id end - def create_status_with_options(options = {}) + def create_status_with_options(**options) subject.call(Fabricate(:account), 'test', nil, options) end end -- cgit From d7a17b5e8b53cd9cebe500460d2ff19d5268ef96 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Wed, 6 Dec 2017 19:44:23 +0900 Subject: Search only from followees (#5897) --- app/services/account_search_service.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'app/services') diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index ce25c3620..a289ceac4 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -58,12 +58,16 @@ class AccountSearchService < BaseService @_domain_is_local ||= TagManager.instance.local_domain?(query_domain) end + def search_from + options[:following] && account ? account.following : Account + end + def exact_match @_exact_match ||= begin if domain_is_local? - Account.find_local(query_username) + search_from.find_local(query_username) else - Account.find_remote(query_username, query_domain) + search_from.find_remote(query_username, query_domain) end end end -- cgit