Поиск по тегу с флажком не показывает результаты на мобильных устройствах

:warning: Примечание от августа 2023 г.: В более ранних примерах в этой теме содержатся ссылки на теги, которые больше не существуют, однако проблема с пустыми результатами сохраняется.

Если я захожу на https://meta.discourse.org/tags/c/theme/61/theme-component с мобильного устройства, нажимаю на лупу, ввожу, например, “topic” и нажимаю на флажок «искать по тегу Customization > Theme component», возникают две проблемы.
Во-первых, нужно дважды нажать на флажок, чтобы он был отмечен. Во-вторых, после нажатия на флажок один или два раза результаты поиска отсутствуют, тогда как при использовании поиска на десктопной версии их много.

Поиск на мобильном устройстве без нажатия на флажок


https://meta.discourse.org/search?context=tag&context_id=theme-component&q=Topic&skip_context=true

Поиск на мобильном устройстве и однократное нажатие на флажок


https://meta.discourse.org/search?context=tag&context_id=theme-component&q=Topic&skip_context=false

Поиск на мобильном устройстве и двукратное нажатие на флажок


https://meta.discourse.org/search?context=tag&context_id=theme-component&q=Topic&skip_context=false

Поиск с использованием десктопной версии


https://meta.discourse.org/search?q=topic%20%23theme-component

Я знаю, что могу ввести Customization > Theme component в строку поиска, чтобы получить результаты на мобильном устройстве, но я думаю, что это не является целью предоставления этого флажка.

3 лайка

Привет, отличная находка, @moin. Думаю, вы обнаружили две ошибки. :slight_smile:

  1. Флажок не срабатывает сразу, и
  2. Ограничение поиска тегом создаёт маршрут, который Discourse обрабатывает с ошибкой 403

Флажок не устанавливается

В мобильной версии ссылка поиска добавляет параметр «context» в URL, что позволяет увидеть соответствующий переключатель. В данном случае URL, который мы рассматриваем, выглядит так: https://meta.discourse.org/search?context=tag&context_id=theme-component&skip_context=true.

При переключении флажка мы изменяем поисковый запрос: параметр skip_context меняется с true на false и обратно. Это также означает, что можно сформировать URL, где флажок изначально установлен, например: https://meta.discourse.org/search?context=category&context_id=1&skip_context=false. Это важно, так как я заметил разное поведение при загрузке в этих двух состояниях.

skip_context=true

Это состояние по умолчанию в мобильном режиме: флажок не установлен. При взаимодействии с флажком (через касание или клавиатуру) URL меняется на skip_context=false, но сам флажок не устанавливается. Чтобы его активировать, нужно кликнуть ещё раз; при этом в URL останется значение «false».

После этого флажок можно переключать туда-сюда, и URL будет меняться соответствующим образом, как и ожидалось.

skip_context=false

При загрузке поиска флажок уже установлен, и взаимодействие с ним работает как положено: каждое действие меняет состояние флажка и значение в URL.


Отдельно я заметил, что использование этих флажков приводит к потере фокуса на странице, независимо от значения skip_context; надеюсь, это связано с той же проблемой, что и наш случай с двойным кликом. :slight_smile:

Я воспроизвёл это поведение в безопасном режиме и на мобильных устройствах.

Хорошо, в следующем ответе я постараюсь объяснить, почему теги не применяются к области поиска, чтобы при необходимости это было проще выделить в отдельную тему.

4 лайка

Ограничение области видимости тегов при поиске возвращает 403

Это меня сбило с толку, потому что, когда я пытался воспроизвести это вне мета-раздела, я случайно загрузил категорию вместо тега в контексте поиска. К счастью, когда я осознал свою ошибку, я хотя бы понял, как формируются поисковые запросы для таких контекстов.

Возьмем для примера #customization:theme и #customization:theme-component:

Когда мы используем контекст поиска для тегов, наш запрос выглядит так: <https://meta.discourse.org/search?q=topic&page=1&search_context[type]=tag&search_context[id]=theme-component>, который возвращает 403.

Когда мы используем контекст поиска для категорий, наш запрос выглядит так: <https://meta.discourse.org/search?q=topic&page=1&search_context[type]=category&search_context[id]=61>, который возвращает результаты, как и ожидалось.

Кроме того, если мы выбираем тег из расширенных фильтров поиска, наш запрос выглядит так: <https://meta.discourse.org/search?q=tags:theme-component&page=1> и возвращает результаты с этим тегом.

Я также могу воспроизвести возврат 403 по пути &search_context[type]=tag&search_context[id]=theme-component в режиме safe-mode.

Существуют ли другие типы search_context? Я мельком взглянул на код, но не смог определить; если такие есть, мы можем протестировать и их.

3 лайка

Продолжение обсуждения из Подписки Discourse — возможность подписки на определённый срок:

Я собирался перейти к постам, которые я создал с тегом «подписки», поэтому перешёл на страницу списка тегов и поискал оттуда. Результатов нет — см. ниже. Когда я ищу со главной страницы, всё работает нормально. Возможно, проблема в флажке, так как это отличие.

1 лайк

Могу это подтвердить. Только что попробовал поиск по тегу post-voting с отмеченной опцией, и он не нашёл никаких результатов (@упоминание или другое обычное ключевое слово).

Android/Chrome

(на рабочем столе пока не проверял) Проверил на рабочем столе, и там всё работает нормально.

Это одна из проблем, о которых я сообщал здесь?

2 лайка

У меня не возникло проблем с отметкой галочки, но отсутствие результатов, похоже, та же самая проблема.

Я объединил темы. :+1: (и немного отредактировал первое сообщение).

Хочу также отметить: примеры тегов в первом сообщении больше не существуют, хотя проблема с пустыми результатами поиска на мобильных устройствах, которую они демонстрировали, всё ещё актуальна.

Мой очень простой пошаговый алгоритм:

  • На мобильном устройстве перейдите к списку тем post-voting
  • Откройте поиск и установите флажок Search the #post_voting tag
  • Введите что-то, что точно должно дать результат (например, ‘comment’ или ‘@JammyDodger’)
  • Нажмите ‘Search’

Результат: ‘Ничего не найдено

Ожидаемый результат: Система находит нужные мне вещи

2 лайка

Это действительно ошибка, спасибо за отчет, друзья. Она должна быть исправлена после слияния этого PR: FIX: Search by tag context was broken by pmusaraj · Pull Request #23006 · discourse/discourse · GitHub

2 лайка

Теперь это объединено :partying_face:

3 лайка

Эта тема была автоматически закрыта через 2 дня. Новые ответы больше не принимаются.