Как лучше всего обрабатывать значения по умолчанию для пользовательских полей и логи настроек категорий

Некоторый контекст

Причина этого явления заключается в следующем:

  1. Плагин Activity Pub устанавливает значения по умолчанию для этих полей на стороне клиента (здесь).

  2. Все изменения пользовательских полей категории логируются как изменения настроек категории в ядре (здесь).

Пункт «1» (установка значений по умолчанию для пользовательских полей категории на стороне клиента) на данный момент кажется лучшим способом работы с конвейером пользовательских полей категории, так как действие update категории автоматически сохраняет их. Кроме того, важно гарантировать установку значений по умолчанию, если пользовательские поля взаимозависимы (как это происходит в плагине AP).

Обратите внимание, что в настоящее время плагин не может выборочно сериализовать пользовательские поля для отправки на сервер (без изменения исходного кода).

Учитывая вышесказанное, я задаюсь вопросом, имеет ли смысл пункт «2»? Как отмечает Дэвид, при текущей конфигурации конвейера изменение пользовательского поля не обязательно указывает на изменение конфигурации настроек категории (например, переход из состояния nil в значение по умолчанию).

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

@david Просто напоминаю об этом в вашем списке. Как ваше мнение? Если вы считаете, что в ядре могут потребоваться изменения в способе сохранения пользовательских полей категорий, я могу попробовать это реализовать. Или, возможно, я попробую найти новый способ установки значений по умолчанию для пользовательских полей. Или, возможно, пока оставим всё как есть?

Да, это непросто. Я полагаю, что большинство плагинов не сталкиваются с этой проблемой, потому что их «значение по умолчанию» для настройки категории — это null.

У вас есть идея относительно изменения основного API, которое могло бы помочь улучшить ситуацию?

Совершенно не протестировано, но, думаю, мы можем прямо сейчас что-то реализовать, используя поле ввода с необработанным HTML (обратите внимание на строчное input вместо компонента Input с двусторонним связыванием в Ember).

<input
  value={{or category.custom_fields.my_field "значение по умолчанию"}}
  {{on "change" this.updateMyFieldValue}}
/>

С такой стратегией мы контролируем, как значения считываются и записываются в экземпляр модели. Таким образом, если в интерфейсе значение установлено как «по умолчанию», мы можем записать его как «null» в пользовательских полях:

@action
updateMyFieldValue(event){
  let newValue = event.target.value;
  if(newValue === "значение по умолчанию"){
    newValue = null;
  }

  this.category.set("custom_fields.my_field", newValue);
}

(а затем вы удалите конфигурацию значения по умолчанию, описанную в пункте (1) оригинального поста)