saved searches: always show 'Saved searches' link in navbar.
* Always display 'Saved searches' link in subnav bar, even if the user hasn't created any saved searches yet. * Eliminate use of `has_saved_searches` bitpref on users.
This commit is contained in:
@@ -151,8 +151,6 @@ class SavedSearch < ApplicationRecord
|
|||||||
belongs_to :user
|
belongs_to :user
|
||||||
validates :query, presence: true
|
validates :query, presence: true
|
||||||
validate :validate_count
|
validate :validate_count
|
||||||
before_create :update_user_on_create
|
|
||||||
after_destroy :update_user_on_destroy
|
|
||||||
before_validation :normalize_query
|
before_validation :normalize_query
|
||||||
before_validation :normalize_labels
|
before_validation :normalize_labels
|
||||||
scope :labeled, ->(label) { label.present? ? where("labels @> string_to_array(?, '~~~~')", label) : where("true") }
|
scope :labeled, ->(label) { label.present? ? where("labels @> string_to_array(?, '~~~~')", label) : where("true") }
|
||||||
@@ -163,18 +161,6 @@ class SavedSearch < ApplicationRecord
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_user_on_create
|
|
||||||
if !user.has_saved_searches?
|
|
||||||
user.update(has_saved_searches: true)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def update_user_on_destroy
|
|
||||||
if user.saved_searches.count == 0
|
|
||||||
user.update(has_saved_searches: false)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def disable_labels=(value)
|
def disable_labels=(value)
|
||||||
CurrentUser.update(disable_categorized_saved_searches: true) if value.to_s.truthy?
|
CurrentUser.update(disable_categorized_saved_searches: true) if value.to_s.truthy?
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ class User < ApplicationRecord
|
|||||||
# - disable_tagged_filenames (enabled by 387)
|
# - disable_tagged_filenames (enabled by 387)
|
||||||
# - enable_recent_searches (enabled by 499)
|
# - enable_recent_searches (enabled by 499)
|
||||||
# - disable_cropped_thumbnails (enabled by 22)
|
# - disable_cropped_thumbnails (enabled by 22)
|
||||||
|
# - has_saved_searches
|
||||||
BOOLEAN_ATTRIBUTES = %w(
|
BOOLEAN_ATTRIBUTES = %w(
|
||||||
is_banned
|
is_banned
|
||||||
has_mail
|
has_mail
|
||||||
|
|||||||
@@ -8,9 +8,7 @@
|
|||||||
<% unless CurrentUser.is_anonymous? %>
|
<% unless CurrentUser.is_anonymous? %>
|
||||||
<%= subnav_link_to "Favorites", posts_path(tags: "ordfav:#{CurrentUser.user.name}") %>
|
<%= subnav_link_to "Favorites", posts_path(tags: "ordfav:#{CurrentUser.user.name}") %>
|
||||||
<%= subnav_link_to "Fav groups", favorite_groups_path %>
|
<%= subnav_link_to "Fav groups", favorite_groups_path %>
|
||||||
<% if CurrentUser.has_saved_searches? %>
|
<%= subnav_link_to "Saved searches", posts_path(tags: "search:all") %>
|
||||||
<%= subnav_link_to "Saved searches", posts_path(:tags => "search:all") %>
|
|
||||||
<% end %>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= subnav_link_to "Changes", post_versions_path %>
|
<%= subnav_link_to "Changes", post_versions_path %>
|
||||||
<% if CurrentUser.can_approve_posts? %>
|
<% if CurrentUser.can_approve_posts? %>
|
||||||
|
|||||||
@@ -170,7 +170,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if CurrentUser.id == user.id %>
|
<% if CurrentUser.id == user.id %>
|
||||||
<% if CurrentUser.has_saved_searches? %>
|
<% if SavedSearch.labels_for(CurrentUser.user.id).present? %>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Saved Searches</th>
|
<th>Saved Searches</th>
|
||||||
<td>
|
<td>
|
||||||
|
|||||||
@@ -146,11 +146,6 @@ class SavedSearchTest < ActiveSupport::TestCase
|
|||||||
@saved_search = @user.saved_searches.create(query: " ZZZ xxx ")
|
@saved_search = @user.saved_searches.create(query: " ZZZ xxx ")
|
||||||
end
|
end
|
||||||
|
|
||||||
should "update the bitpref on the user" do
|
|
||||||
@user.reload
|
|
||||||
assert(@user.has_saved_searches?, "should have saved_searches bitpref set")
|
|
||||||
end
|
|
||||||
|
|
||||||
should "normalize the query aside from the order" do
|
should "normalize the query aside from the order" do
|
||||||
assert_equal("yyy xxx", @saved_search.query)
|
assert_equal("yyy xxx", @saved_search.query)
|
||||||
end
|
end
|
||||||
@@ -164,18 +159,6 @@ class SavedSearchTest < ActiveSupport::TestCase
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "Destroying a saved search" do
|
|
||||||
setup do
|
|
||||||
@saved_search = @user.saved_searches.create(query: "xxx")
|
|
||||||
@saved_search.destroy
|
|
||||||
end
|
|
||||||
|
|
||||||
should "update the bitpref on the user" do
|
|
||||||
@user.reload
|
|
||||||
assert(!@user.has_saved_searches?, "should not have the saved_searches bitpref set")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context "A user with max saved searches" do
|
context "A user with max saved searches" do
|
||||||
setup do
|
setup do
|
||||||
@user = FactoryBot.create(:gold_user)
|
@user = FactoryBot.create(:gold_user)
|
||||||
|
|||||||
Reference in New Issue
Block a user