Привет, kynic,
onPageChange может быть слишком широким для использования (и ненадежным, если вы загружаете или обновляете посты).
Вместо этого можно использовать decorateCookedElement. Этот метод вызывается для каждого обработанного элемента поста.
Кроме того, вот способ отключения индикатора электронной почты. Это просто хак, чтобы не включать HTML. Если вам интересно, вы можете посмотреть исходный код здесь.
<script type="text/discourse-plugin" version="0.8">
api.reopenWidget("post-meta-data", {
html(attrs) {
if (!attrs.via_email) {
return this._super(attrs);
}
// Не генерировать виджет "post-email-indicator".
attrs.via_email = false;
const html = this._super(attrs);
attrs.via_email = true;
return html;
}
})
api.decorateCookedElement((element, helper) => {
if (helper?.getModel().via_email) {
element.querySelector('details.elided').remove();
}
}, { onlyStream: true });
</script>
Также можно использовать только CSS, чтобы скрыть их.
.post-info.via-email,
.cooked details.elided {
display: none;
}