Quindi, dopo aver quasi rotto il mio computer, ho trovato una soluzione alternativa — probabilmente non la migliore ![]()
Sembra che, quando si fa clic su Rispondi all’interno del Full App Embed, il compositore si apre effettivamente correttamente nel DOM (#reply-control.open), ma per qualche motivo rimane display: none.
L’ho verificato nella console del browser: il compositore era presente, ma il suo valore calcolato di display era “none”. Eseguendo manualmente:
document.querySelector('#reply-control').style.setProperty('display', 'block', 'important');
il compositore è apparso immediatamente e tutto ha funzionato normalmente.
Come soluzione alternativa, l’aggiunta del seguente JS al tema di Discourse risolve il problema per me:
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
if (!document.body.classList.contains("embed-mode")) {
return;
}
const fixComposer = () => {
const composer = document.querySelector("#reply-control.open");
if (composer) {
composer.style.setProperty("display", "block", "important");
}
};
const observer = new MutationObserver(fixComposer);
observer.observe(document.body, {
childList: true,
subtree: true,
attributes: true,
attributeFilter: ["class"],
});
fixComposer();
});
Questo sembra risolverlo completamente e ho limitato la soluzione alternativa alla modalità embed in modo da non influire sull’interfaccia normale di Discourse.
Ovviamente questa probabilmente non è la soluzione a lungo termine ideale, ma spero che aiuti a identificare cosa sta causando al compositore aperto di rimanere display: none nel Full App Embed.