Impossibile impostare il markdown come modalità predefinita

A seguito di ciò, abbiamo un plugin che utilizza i token BBCode “wrap_open”, che non sono ancora supportati dall’editor di testo avanzato. Pertanto, dobbiamo assicurarci di rimanere in modalità Markdown per ora.

Ho usato Claude Sonnet per generare il seguente codice per garantirlo. Sarei felice di ricevere feedback su come potrei migliorarlo (soprattutto se presenta bug :sweat_smile:). Condivido anche questo nel caso in cui possa aiutare altri amministratori del forum. Il codice va in Impostazioni tema > JS (/admin/customize/themes/2/common/js/edit):

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

export default apiInitializer((api) => {
  // Forza il passaggio dell'editor dell'utente alla modalità markdown
  function switchToMarkdownMode() {
    const currentUser = api.getCurrentUser();

    // L'utente dovrebbe essere connesso se il composer è stato aperto
    if (!currentUser) {
      console.error('Nessun utente trovato');
      return;
    }

    // Ottenuta questa opzione da qui
    // 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) {
      // Passa solo se non è già in modalità markdown
      // Esempio di utilizzo: https://github.com/discourse/discourse/blob/87476ce2c18fb8f856dda7ff03804ed5fbb0ff38/app/assets/javascripts/discourse/app/services/user-tips.js#L127
      currentUser.set('user_option.composition_mode', 0);

      // Salva la preferenza dell'utente sul server
      currentUser.save(['composition_mode']).then(() => {
        console.log('Passato con successo alla modalità markdown');
      }).catch((error) => {
        console.error('Impossibile aggiornare la modalità di composizione:', error);
      });

      // Attiva immediatamente l'interfaccia del composer corrente
      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('Attivato il composer corrente in modalità markdown');
          }
        }
      }, 100); // Piccolo ritardo per garantire il rendering completo del composer
    } else {
      console.log('Già in modalità markdown, nessuna modifica necessaria');
    }
  }

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