Débogage du problème display none dans les intégrations Discourse

Salut,
Merci pour cette nouvelle fonctionnalité, elle a l’air super !

J’essaie de configurer l’intégration complète de l’application (Full App Embed) et tout semble fonctionner correctement, y compris la connexion.

Le seul problème, c’est que quand je clique sur Répondre, rien ne se passe — le composeur/zone de texte n’apparaît pas.

Je ne vois aucune erreur associée dans la console du navigateur non plus.

Est-ce que je rate quelque chose dans la configuration ?

Merci !

Donc, après avoir failli casser mon ordinateur, j’ai trouvé une solution de contournement — probablement pas la plus idéale :sweat_smile:

Il semble que lorsque l’on clique sur Répondre dans l’intégration Full App Embed, le composeur s’ouvre correctement dans le DOM (#reply-control.open), mais pour une raison inconnue, il reste en display: none.

Je l’ai confirmé dans la console du navigateur : le composeur était présent, mais sa valeur de display calculée était “none”. En exécutant manuellement :

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

le composeur est apparu immédiatement et tout a fonctionné normalement.

En tant que solution de contournement, l’ajout du JS suivant au thème Discourse résout le problème pour moi :

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

Cela semble le corriger complètement, et j’ai limité le contournement au mode embed afin de ne pas affecter l’interface Discourse normale.

Évidemment, ce n’est probablement pas la solution idéale à long terme, mais j’espère que cela aidera à identifier ce qui cause la persistance de display: none sur le composeur ouvert dans le Full App Embed.

Étant donné que ce problème ne se produit pas sur AMD: Building One Developer Community, il s’agit probablement d’un problème de votre côté.