catstodon/app/services/search_service.rb
Eugen Rochko e20895f251
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
2017-12-05 23:02:27 +01:00

38 lines
969 B
Ruby

# frozen_string_literal: true
class SearchService < BaseService
attr_accessor :query
def call(query, limit, resolve = false, account = nil)
@query = query
default_results.tap do |results|
if url_query?
results.merge!(remote_resource_results) unless remote_resource.nil?
elsif query.present?
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
end
def default_results
{ accounts: [], hashtags: [], statuses: [] }
end
def url_query?
query =~ /\Ahttps?:\/\//
end
def remote_resource_results
{ remote_resource_symbol => [remote_resource] }
end
def remote_resource
@_remote_resource ||= FetchRemoteResourceService.new.call(query)
end
def remote_resource_symbol
remote_resource.class.name.downcase.pluralize.to_sym
end
end