Сложности с переопределением функции save() на странице бейджа администратора

Я пишу плагин для расширения функциональности значков. Когда на странице администрирования значков нажимается кнопка «Сохранить», я хочу выполнить дополнительный код.

Discourse Javascript:

Discourse hbs:

Мой код discourse/plugins/discourse-badge-extension/assets/javascripts/discourse/initializers/modify-admin-badges-show-controller.js:

import { withPluginApi } from 'discourse/lib/plugin-api';

export default {
  name: 'modify-admin-badges-show',

  initialize() {

    withPluginApi('0.8', api => {
      api.modifyClass('controller:admin-badges/show', {
        pluginId: 'discourse-badge-extension',
        actions: {

          save() {
            console.log("Custom pre-save logic triggered");
            alert("Pre-save logic");

            this._super(...arguments); // Вызов оригинального метода save

            console.log("Post-save logic triggered");
            alert("Post-save logic");
          },
        }
      });

      alert("Hello! I am an alert box!!");  
    });
  }
};

Это инициализатор.

  • Окно с предупреждением "Hello! I am an alert box!!" появляется, что указывает на запуск кода при перезагрузке.
  • Строки console.log и окна с предупреждением не срабатывают при сохранении, что говорит о том, что переопределение не работает?
  • Имя контроллера controller:admin-badges/show не вызывает ошибку (хотя намеренное добавление опечатки приводит к ошибке, что подтверждает, что я обращаюсь к реальному контроллеру).

Воспроизвести проблему должно быть легко, так как это всего один инициализатор. Что я делаю не так???

Привет @piffy. К сожалению, это несовместимость между нативным синтаксисом классов в JS, функциональностью reopen() в EmberObjects и декоратором @action (который технически создаёт нативный JS-геттер).

Боюсь, у меня нет немедленного решения, чтобы заставить этот конкретный переопределение работать, но мы работаем над более надёжным решением для будущего.

В зависимости от того, что вы пытаетесь сделать, возможно, имеет смысл подключиться к функции “save” модели значков?

Спасибо за быстрый и подробный ответ. Я изучу другую функцию сохранения.