La zone d'édition du nouveau sujet est petite pour les utilisateurs mobiles

Vous pouvez essayer ce petit script. Ajoutez-le à votre thème ou à un nouveau composant HTML dans l’onglet Head.

Il masque la barre d’outils selon les conditions suivantes :

  • Uniquement pour les nouveaux sujets / la modification du premier message d’un sujet / les brouillons de sujet
  • Vue mobile
  • Si l’utilisateur n’a pas de préférence enregistrée. [1]

Le code ne modifie pas les préférences de l’utilisateur.

<script type="text/discourse-plugin" version="0.8">

const { on, observes } = require("discourse-common/utils/decorators");

const serviceComposer = api.container.lookup("service:composer");

function canUpdateToolbar(context) {
  return (
    // Nouveau sujet / Modification du premier message / Brouillon de sujet 
    context._isNewTopic &&
    // La barre d'outils n'est pas masquée
    context.showToolbar &&
    // Vue mobile uniquement
    context.site.mobileView &&
    // Ne pas outrepasser la préférence de l'utilisateur
    context.keyValueStore.get("toolbar-enabled") === undefined
  );
}

function updateShowToolBar(value) {
  serviceComposer._wasToolbarEnabled = !value;
  // Masque la barre d'outils sans mémoriser l'état dans le navigateur de l'utilisateur.
  serviceComposer._toolbarEnabled = value;
  // Actualise le getter calculé
  serviceComposer.notifyPropertyChange("showToolbar");
}

api.modifyClass("component:composer-editor", {
  pluginId: "composer-editor-toolbar",

  @observes("composer.action")
  _composerSwitchAction() {
    // Gère la situation lors du passage d'une réponse à un nouveau sujet
    // sans fermer le compositeur.
    if (canUpdateToolbar(this)) {
      updateShowToolBar(false);
    }
  },

  @on("didInsertElement")
  _composerEditorInit() {
    this.appEvents.one(`${this.composerEventPrefix}:will-open`, () => {
      if (canUpdateToolbar(this)) {
        updateShowToolBar(false);
      }
    });

    this._super(...arguments);
  },

  @on("willDestroyElement")
  _composerClosed() {
    this._super(...arguments);

    // Restaure la barre d'outils si elle est masquée manuellement.
    if (serviceComposer._wasToolbarEnabled) {
      updateShowToolBar(true);
    }
  },
});

</script>

  1. Une fois qu’un utilisateur clique sur le sélecteur, le navigateur mémorise l’état ↩︎