こんにちは 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;
}