Fehlerbehebung bei display:none in Discourse-Einbettungen

Hey,
danke für diese neue Funktion, sie sieht super aus!

Ich habe versucht, das Full App Embed einzurichten, und alles scheint einwandfrei zu funktionieren, auch der Login.

Das einzige Problem ist, dass beim Klick auf „Antworten“ nichts passiert – der Composer/Bereiche für die Texteingabe wird nicht angezeigt.

Im Browser-Console sehe ich auch keine verwandten Fehlermeldungen.

Verpasse ich etwas in der Konfiguration?

Danke!

Nachdem ich meinen Rechner beinahe kaputt gemacht habe, habe ich eine Workaround-Lösung gefunden — wahrscheinlich nicht die ideale, aber sie funktioniert :sweat_smile:

Es scheint, dass, wenn man im Full App Embed auf „Antworten“ klickt, der Composer im DOM zwar korrekt geöffnet wird (#reply-control.open), aber aus irgendeinem Grund weiterhin display: none bleibt.

Ich habe das im Browser-Console überprüft: Der Composer war vorhanden, aber sein berechneter display-Wert war “none”. Durch manuelles Ausführen von:

document.querySelector('#reply-control').style.setProperty('display', 'block', 'important');

wurde der Composer sofort angezeigt und alles funktionierte normal.

Als Workaround behebt das Hinzufügen des folgenden JS-Codes zum Discourse-Theme das Problem bei mir:

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

Das scheint das Problem vollständig zu beheben, und ich habe den Workaround auf den embed-mode beschränkt, damit die normale Discourse-Oberfläche nicht betroffen ist.

Offensichtlich ist das wahrscheinlich nicht die ideale Langzeitlösung, aber vielleicht hilft es dabei, herauszufinden, warum der geöffnete Composer im Full App Embed weiterhin display: none bleibt.

Da dies nicht auf AMD: Building One Developer Community der Fall ist, liegt das Problem möglicherweise auf deiner Seite.