posts: eliminate pool_id, favgroup_id url params.

Replace the `pool_id` and `favgroup_id` url params:

    https://danbooru.donmai.us/posts/123?pool_id=456
    https://danbooru.donmai.us/posts/123?favgroup_id=456

with the `q` param:

    https://danbooru.donmai.us/posts/123?q=pool:456
    https://danbooru.donmai.us/posts/123?q=favgroup:456
This commit is contained in:
evazion
2021-01-29 21:41:09 -06:00
parent 1e778dbbf6
commit 27cac98516
9 changed files with 54 additions and 46 deletions

View File

@@ -1,14 +1,10 @@
class PostNavbarComponent < ApplicationComponent
extend Memoist
attr_reader :post, :current_user, :search
attr_reader :post, :current_user, :search, :pool_id, :favgroup_id
def initialize(post:, current_user:, search: nil, pool_id: nil, favgroup_id: nil)
def initialize(post:, current_user:, search: nil)
@post = post
@current_user = current_user
@search = search.presence || "status:any"
@pool_id = pool_id&.to_i
@favgroup_id = favgroup_id&.to_i
end
def render?
@@ -16,24 +12,30 @@ class PostNavbarComponent < ApplicationComponent
end
def pools
post.pools.undeleted.sort_by do |pool|
@pools ||= post.pools.undeleted.sort_by do |pool|
[pool.id == pool_id ? 0 : 1, pool.is_series? ? 0 : 1, pool.name]
end
end
def favgroups
current_user.favorite_groups.for_post(post.id).sort_by do |favgroup|
@favgroups ||= current_user.favorite_groups.for_post(post.id).sort_by do |favgroup|
[favgroup.id == favgroup_id ? 0 : 1, favgroup.name]
end
end
def has_search_navbar?
!has_order_metatag? && pool_id.blank? && favgroup_id.blank?
!query.has_metatag?(:order, :ordfav, :ordpool) && pool_id.blank? && favgroup_id.blank?
end
def has_order_metatag?
PostQueryBuilder.new(search).has_metatag?(:order, :ordfav, :ordpool)
def pool_id
@pool_id ||= query.find_metatag(:pool, :ordpool)&.to_i
end
memoize :pools, :favgroups
def favgroup_id
@favgroup_id ||= query.find_metatag(:favgroup, :ordfavgroup)&.to_i
end
def query
@query ||= PostQueryBuilder.new(search)
end
end