수신 이메일 모달 비활성화 방법

kynic님, 안녕하세요.

onPageChange는 사용 범위가 너무 넓을 수 있으며(게시물을 로드하거나 업데이트할 경우 신뢰할 수 없을 수 있음), 대신 decorateCookedElement를 사용할 수 있습니다. 이 함수는 모든 게시물의 cooked 요소에 대해 호출됩니다.

추가적으로, 이메일 표시기를 비활성화하는 방법도 소개합니다. 이는 단순히 HTML을 포함하지 않도록 하는 해킹(hack) 방식입니다. 궁금하시다면 원본 코드를 여기에서 확인하실 수 있습니다.

<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;
}