From a34838d671b18e5936fcf22e16266cbd4175b408 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Thu, 24 Nov 2022 14:45:13 +1000 Subject: [PATCH] FIX: Minor hashtag autocomplete fixes (#19173) * Do not search category name when searching channels to avoid confusing results * Overflow text in autocomplete menu with ... if it is too long * Make autocomplete menu less height --- .../stylesheets/common/components/hashtag.scss | 7 +++++-- plugins/chat/lib/chat_channel_fetcher.rb | 11 +++++++++-- .../lib/chat_channel_hashtag_data_source_spec.rb | 14 ++------------ 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/assets/stylesheets/common/components/hashtag.scss b/app/assets/stylesheets/common/components/hashtag.scss index 35d40724676..6bae5c75bad 100644 --- a/app/assets/stylesheets/common/components/hashtag.scss +++ b/app/assets/stylesheets/common/components/hashtag.scss @@ -30,8 +30,8 @@ a.hashtag-cooked { } .hashtag-autocomplete { - max-height: 300px; - overflow-y: scroll; + max-height: 210px; + overflow-y: auto; .hashtag-autocomplete__option { .hashtag-autocomplete__link { @@ -46,6 +46,9 @@ a.hashtag-cooked { .hashtag-autocomplete__text { flex: 1; margin-left: 0; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; .emoji { width: 15px; diff --git a/plugins/chat/lib/chat_channel_fetcher.rb b/plugins/chat/lib/chat_channel_fetcher.rb index 129c64cb6c6..55a2341cb23 100644 --- a/plugins/chat/lib/chat_channel_fetcher.rb +++ b/plugins/chat/lib/chat_channel_fetcher.rb @@ -99,8 +99,15 @@ module Chat::ChatChannelFetcher channels = channels.where(status: options[:status]) if options[:status].present? if options[:filter].present? + category_filter = \ + if options[:filter_on_category_name] + "OR categories.name ILIKE :filter" + else + "" + end + sql = - "chat_channels.name ILIKE :filter OR chat_channels.slug ILIKE :filter OR categories.name ILIKE :filter" + "chat_channels.name ILIKE :filter OR chat_channels.slug ILIKE :filter #{category_filter}" channels = channels.where(sql, filter: "%#{options[:filter].downcase}%").order( "chat_channels.name ASC, categories.name ASC", @@ -142,7 +149,7 @@ module Chat::ChatChannelFetcher channels = secured_public_channel_search( guardian, - options.merge(include_archives: true), + options.merge(include_archives: true, filter_on_category_name: true), ) decorate_memberships_with_tracking_data(guardian, channels, memberships) channels = channels.to_a diff --git a/plugins/chat/spec/lib/chat_channel_hashtag_data_source_spec.rb b/plugins/chat/spec/lib/chat_channel_hashtag_data_source_spec.rb index b00948be7b0..4c383f4a171 100644 --- a/plugins/chat/spec/lib/chat_channel_hashtag_data_source_spec.rb +++ b/plugins/chat/spec/lib/chat_channel_hashtag_data_source_spec.rb @@ -55,20 +55,10 @@ RSpec.describe Chat::ChatChannelHashtagDataSource do end describe "#search" do - it "finds a channel by category name" do + it "does not find channels by category name" do category.update!(name: "Randomizer") result = described_class.search(guardian, "randomiz", 10).first - expect(result.to_h).to eq( - { - relative_url: channel1.relative_url, - text: "Zany Things", - description: "Just weird stuff", - icon: "comment", - type: "channel", - ref: nil, - slug: "random", - }, - ) + expect(result.to_h).to eq({}) end it "finds a channel by slug" do