Не удалось установить режим Markdown по умолчанию

В продолжение темы: у нас есть плагин, использующий токены BBCode «wrap_open», которые пока не поддерживаются в редакторе с богатым форматированием. Поэтому нам пока необходимо оставаться в режиме Markdown.

Я использовал Claude Sonnet для генерации следующего кода, чтобы обеспечить это. Буду рад получить любые отзывы о том, как его можно улучшить (особенно если в нём есть какие-либо ошибки :sweat_smile:). Также делюсь этим на случай, если это поможет другим администраторам форумов. Код размещается в настройках темы > JS (/admin/customize/themes/2/common/js/edit):

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

export default apiInitializer((api) => {
  // Принудительно переключить редактор пользователя в режим Markdown
  function switchToMarkdownMode() {
    const currentUser = api.getCurrentUser();

    // Пользователь должен быть авторизован, если открыт композер
    if (!currentUser) {
      console.error('Пользователь не найден');
      return;
    }

    // Получил эту опцию отсюда
    // 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) {
      // Переключать только если ещё не в режиме Markdown
      // Пример использования: https://github.com/discourse/discourse/blob/87476ce2c18fb8f856dda7ff03804ed5fbb0ff38/app/assets/javascripts/discourse/app/services/user-tips.js#L127
      currentUser.set('user_option.composition_mode', 0);

      // Сохранить настройку пользователя на сервере
      currentUser.save(['composition_mode']).then(() => {
        console.log('Успешно переключено в режим Markdown');
      }).catch((error) => {
        console.error('Не удалось обновить режим композиции:', error);
      });

      // Немедленно переключить текущий интерфейс композера
      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('Переключено текущее окно композиции в режим Markdown');
          }
        }
      }, 100); // Небольшая задержка для полной отрисовки композера
    } else {
      console.log('Уже в режиме Markdown, изменений не требуется');
    }
  }

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