Решено: фильтр не обновляет статус в выпадающем списке

Это произошло уже довольно давно и было исправлено, так что, видимо, это регрессия. Выпадающий фильтр для статуса «Решено» работает (списки фильтруются), но сам выпадающий список не обновляется до текущего статуса фильтра. Он всегда остаётся на значении «все».

Это происходит в последней стабильной версии Discourse.

Другая проблема, с которой я столкнулся: я могу ограничить использование статуса «Решено» только тегами. Однако фильтр не отображается в списках тегов. Он появляется только в списках категорий, где включён статус «Решено», или когда он включён для всех тем.

Редактирование: Я также использую этот фильтр в компоненте темы Featured Lists. Это работало:

    const topicList = await this.store.findFiltered('topicList', {
      filter: this.args.list.filter,
      params: {
        order: 'activity',
        category: this.args.list.category,
        tags: this.args.list.tag,
        solved: this.args.list.solved,
      },

но фильтр перестал работать в компоненте. При этом ошибок я не вижу.

1 лайк

Не знаю, почему это произошло и связано ли это с изменениями в ядре, но быстрая отладка здесь

https://github.com/discourse/discourse-solved/blob/main/assets/javascripts/discourse/connectors/bread-crumbs-right/solved-status-filter.js#L47-L51

показывает, что modelParams не существует, если вы не находитесь на странице категории.

Он определён здесь:

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/routes/build-category-route.js#L71

Несколько альтернатив работают на главной странице и маршруте категории:

.queryParams.solved
.attributes.list.params.solved
.attributes.list.listParams.solved

Я не вижу никаких недавних изменений в ядре. :thinking:

Судя по тому, что я вижу, modelParams использовался с момента этого PR:

1 лайк

Спасибо, что разобрались в этом @Arkshine! Что касается моего компонента, я опубликовал его всего два месяца назад, и я почти уверен, что тогда всё работало :thinking:

Привет, @manuel! Спасибо за отчёт. Мне не удалось воспроизвести основную проблему, с которой вы столкнулись: фильтр по статусу не обновлялся. Однако я заменил проверку на this.router.currentRoute.queryParams?.solved, что, возможно, сработает лучше.

Поскольку теги не связаны с категориями, отображение фильтра для каждого тега не всегда уместно, но я всё же добавил его здесь.

Касательно вашего компонента темы: при фильтрации по статусу solved вам следует проверять значения yes / no вместо solved / unsolved. Я только что открыл PR с предлагаемым изменением.

3 лайка

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