Edit: переклассифицировано как ошибка.
Полное воспроизведение ниже.
Я использую api.modifyClass в компоненте темы.
На большинстве страниц это работает нормально, но в некоторых темах свойство не добавляется к модели пользователя при перезагрузке страницы. Я не могу понять, почему это работает на большинстве тем, но не работает на некоторых, или что общего у тем, где это не работает.
Понимает ли кто-нибудь, что я делаю не так здесь?
TL;DR Добавление api.container.lookup для модели ниже modifyClass обходит эту проблему.
В более новых версиях это обязательно. Вчера я даже отправил несколько PR для тем, чтобы добавить это поле. Похоже, я наконец-то становлюсь разработчиком плагинов и тем.
Да, pluginId, я полагаю, нужен для предотвращения повторного применения модификаций. Отсутствие этого параметра не должно объяснять, почему модификация вообще не была выполнена ни разу?
Мне казалось, что если что-то ещё изменяет класс, то это может быть гонка, чтобы увидеть, кто это сделал. Но JavaScript для меня всё ещё в основном загадка.
… теоретически оба варианта должны оцениваться при обновлении браузера, после чего гонка условий на переходе маршрута становится неактуальной, так как модификация уже должна быть применена…
Хорошо, я получил уведомление от полезного сообщения, которое, похоже, было удалено между тем.
Предложение не сработало, но оно содержало подсказку, которая помогла мне решить эту проблему.
Добавление следующего фрагмента ниже неработающего кода последовательно решало проблемы, с которыми я сталкивался. Я протестировал это на нескольких независимых форумах, как на стабильной версии, так и на версии с прошедшими тестами. Я думаю, что это следует переклассифицировать как Contribute > Bug …
Я добавил console.log в код API плагинов app/assets/javascripts/discourse/app/lib/plugin-api.js, чтобы он выводил сообщение каждый раз, когда вызывается modifyClass.
Я удалил все внешние плагины, чтобы убедиться, что конфликта нигде нет.
Воспроизведение:
создайте пустой форум на ветке stable (без Ember CLI). Это также не работает на ветке tests-passed (без Ember CLI). Я не тестировал это с Ember CLI.
добавьте компонент темы со следующим кодом в раздел Common - Head