Думаю, это может быть ошибкой в Discourse, но не уверен. Возможно, я что-то делаю неправильно.
У меня есть плагин, который добавляет информацию в коннектор user-card-post-names.
Handlebars:
JavaScript:
В свою очередь, он вызывает этот JavaScript-код, который выполняет основную работу:
Детали проблемы:
В предыдущем JS-коде есть эти две строки:
var version = userModel.custom_fields && userModel.custom_fields["directoryopus_link_version"];
var edition = userModel.custom_fields && userModel.custom_fields["directoryopus_link_edition"];
Затем выполняется проверка if (version || edition) { ..., и в зависимости от результата генерируются некоторые строки (opusLinkClass, opusLinkIcon, opusLinkText), которые затем сохраняются:
component.set("opusLinkClass", opusLinkClass);
component.set("opusLinkIcon", opusLinkIcon);
component.set("opusLinkText", opusLinkText);
Эти строки используются в файле Handlebars в начале этого сообщения.
В окне журнала браузера никогда не возникает ошибок или предупреждений, но иногда что-то идёт не так.
Я тестирую с учётной записью, у которой установлены оба поля custom_fields, поэтому проверка if (version || edition) всегда должна переходить в первую ветку, а не в else if (!viewingStaff) ниже неё.
Однако иногда выполнение переходит во вторую ветку, что означает, что version и edition не были установлены.
Это происходит нечасто, поэтому я считаю, что это может быть ошибкой в Discourse.
Проблема возникает только тогда, когда я создаю новую тему и отвечаю на неё, или когда редактирую только что сделанный ответ. Похоже, что объект userModel не инициализируется должным образом в некоторых ситуациях, когда запускается коннектор, возможно, из-за состояния гонки где-то?
Проблема возникает только один раз в каждой теме. Если я обновлю страницу нажатием F5, всё снова работает нормально и остаётся таким для этой темы. (По крайней мере, насколько я могу судить. Это происходит полуслучайно, поэтому возможно, что я просто не видел повторения проблемы для одной и той же темы.)
Спасибо за ваше время и любые предложения.