diff --git a/app/helpers/posts_helper.rb b/app/helpers/posts_helper.rb index d161271be..a8052afb0 100644 --- a/app/helpers/posts_helper.rb +++ b/app/helpers/posts_helper.rb @@ -1,6 +1,5 @@ module PostsHelper def post_search_counts_enabled? - return false Danbooru.config.enable_post_search_counts && Danbooru.config.reportbooru_server.present? && Danbooru.config.reportbooru_key.present? end @@ -23,40 +22,32 @@ module PostsHelper end def missed_post_search_count_js - return nil unless post_search_counts_enabled? + return unless post_search_counts_enabled? + return unless params[:ms] == "1" && @post_set.post_count == 0 && @post_set.is_single_tag? - if params[:ms] == "1" && @post_set.post_count == 0 && @post_set.is_single_tag? - session_id = session.id - verifier = ActiveSupport::MessageVerifier.new(Danbooru.config.reportbooru_key, serializer: JSON, digest: "SHA256") - sig = verifier.generate("#{params[:tags]},#{session_id}") - return render("posts/partials/index/missed_search_count", sig: sig) - end + sig = generate_reportbooru_signature(params[:tags]) + render "posts/partials/index/missed_search_count", sig: sig end def post_search_count_js - return nil unless post_search_counts_enabled? + return unless post_search_counts_enabled? + return unless params[:action] == "index" && params[:page].nil? && params[:tags].present? - if params[:action] == "index" && params[:page].nil? - tags = Tag.scan_query(params[:tags]).sort.join(" ") - - if tags.present? - key = "ps-#{tags}" - value = session.id - verifier = ActiveSupport::MessageVerifier.new(Danbooru.config.reportbooru_key, serializer: JSON, digest: "SHA256") - sig = verifier.generate("#{key},#{value}") - return render("posts/partials/index/search_count", sig: sig) - end - end - - return nil + tags = Tag.scan_query(params[:tags]).sort.join(" ") + sig = generate_reportbooru_signature("ps-#{tags}") + render "posts/partials/index/search_count", sig: sig end def post_view_count_js - return nil unless post_search_counts_enabled? + return unless post_search_counts_enabled? - msg = "#{params[:id]},#{session.id}" - msg = ActiveSupport::MessageVerifier.new(Danbooru.config.reportbooru_key, serializer: JSON, digest: "SHA256").generate(msg) - return render("posts/partials/show/view_count", msg: msg) + msg = generate_reportbooru_signature(params[:id]) + render "posts/partials/show/view_count", msg: msg + end + + def generate_reportbooru_signature(value) + verifier = ActiveSupport::MessageVerifier.new(Danbooru.config.reportbooru_key, serializer: JSON, digest: "SHA256") + verifier.generate("#{value},#{session[:session_id]}") end def post_source_tag(post)