Kann nicht auf Markdown-Modus als Standard setzen

Als Nachbereitung dazu haben wir ein Plugin, das “wrap_open” BBCode-Token verwendet, welche vom Rich-Text-Editor noch nicht unterstützt werden. Daher müssen wir sicherstellen, dass wir vorerst im Markdown-Modus bleiben.

Ich habe Claude Sonnet verwendet, um den folgenden Code zu generieren, um dies sicherzustellen. Ich freue mich über jedes Feedback, wie ich ihn verbessern kann (insbesondere wenn er Fehler enthält :sweat_smile:). Ich teile ihn auch, falls er anderen Forenadministratoren hilft. Der Code gehört zu den Theme-Einstellungen > JS (/admin/customize/themes/2/common/js/edit):

import {
  apiInitializer
} from "discourse/lib/api";

export default apiInitializer((api) => {
  // Erzwinge den Wechsel des Editors des Benutzers in den Markdown-Modus
  function switchToMarkdownMode() {
    const currentUser = api.getCurrentUser();

    // Der Benutzer sollte angemeldet sein, wenn der Composer geöffnet wurde
    if (!currentUser) {
      console.error('Kein Benutzer gefunden');
      return;
    }

    // Diese Option wurde hier gefunden
    // https://github.com/discourse/discourse/blob/f0fc5646dc9bd29b0e814faea490e34800e9b322/app/assets/javascripts/discourse/app/models/user.js#L262C1-L266C4
    const currentMode = currentUser.get('user_option.composition_mode');

    if (currentMode !== 0) {
      // Nur wechseln, wenn nicht bereits im Markdown-Modus
      // Beispielverwendung: https://github.com/discourse/discourse/blob/87476ce2c18fb8f856dda7ff03804ed5fbb0ff38/app/assets/javascripts/discourse/app/services/user-tips.js#L127
      currentUser.set('user_option.composition_mode', 0);

      // Speichere die Benutzereinstellung auf dem Server
      currentUser.save(['composition_mode']).then(() => {
        console.log('Erfolgreich in den Markdown-Modus gewechselt');
      }).catch((error) => {
        console.error('Fehler beim Aktualisieren des Kompositionsmodus:', error);
      });

      // Schalte die aktuelle Composer-Benutzeroberfläche sofort um
      setTimeout(() => {
        const toggleButton = document.querySelector('.composer-toggle-switch[data-rich-editor]');
        if (toggleButton) {
          const isRichTextActive = toggleButton.getAttribute('aria-checked') === 'true';
          if (isRichTextActive) {
            toggleButton.click();
            console.log('Aktuellen Composer in den Markdown-Modus umgeschaltet');
          }
        }
      }, 100); // Kleine Verzögerung, um sicherzustellen, dass der Composer vollständig gerendert ist
    } else {
      console.log('Bereits im Markdown-Modus, keine Änderung erforderlich');
    }
  }

  api.onAppEvent('composer:opened', () => {
    switchToMarkdownMode();
  });
});