Cómo manejar mejor los campos personalizados, valores predeterminados y los registros de configuración de categorías

Algún contexto

La razón por la que esto ocurre es porque

  1. El plugin activity pub establece algunos valores predeterminados para esos campos en el cliente (aquí).

  2. Todos los cambios en los campos personalizados de la categoría se registran como cambios en la configuración de la categoría en el núcleo (aquí).

“1” (establecer valores predeterminados de campos personalizados de categoría en el cliente) parece ser la mejor manera de trabajar con el pipeline de campos personalizados de categoría en este momento, ya que la acción de categoría update los guardará automáticamente, y desea asegurarse de que los valores predeterminados se establezcan si los campos personalizados son interdependientes (como lo son en el plugin AP).

Tenga en cuenta que actualmente no es posible que un plugin serialice selectivamente campos personalizados al servidor (sin monkey patching).

Dado lo anterior, me pregunto si “2” tiene sentido. Como señala David, dada la configuración actual del pipeline, un cambio en un campo personalizado no indica necesariamente un cambio en la configuración de los ajustes de la categoría (es decir, pasar de nil al valor predeterminado).

Tengo curiosidad por escuchar las opiniones de otros sobre esto. Quizás me estoy perdiendo una mejor manera de manejar los valores predeterminados de los campos personalizados de la categoría.

3 Me gusta

@david Solo vuelvo a poner esto en tu lista. ¿Qué te dice tu instinto? Si crees que se necesita un cambio en cómo se guardan los campos personalizados de categoría en el núcleo, puedo intentarlo. O tal vez vea si puedo encontrar una nueva forma de establecer valores predeterminados para los campos personalizados. ¿O tal vez lo dejamos por ahora?

Sí, esto es complicado. Supongo que la mayoría de los complementos no se encuentran con esto porque su ‘valor predeterminado’ para la configuración de categoría es un valor nulo.

¿Tenías alguna idea para un cambio en la API principal que pudiera ayudar a mejorar la situación?

Totalmente sin probar, pero creo que podríamos lograr algo ahora mismo utilizando un campo de entrada HTML sin procesar (nota la minúscula input en lugar del componente \u003cInput de doble enlace de Ember).

<input
  value={{or category.custom_fields.my_field "valor predeterminado"}}
  {{on "change" this.updateMyFieldValue}}
/>

Con esa estrategia, tenemos control sobre cómo se leen/escriben los valores en la instancia del modelo. Por lo tanto, si un valor se establece en el valor predeterminado en la interfaz de usuario, podemos escribirlo como ‘nulo’ en los campos personalizados:

@action
updateMyFieldValue(event){
  let newValue = event.target.value;
  if(newValue === "valor predeterminado"){
    newValue = null;
  }

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

(y luego eliminarías la configuración del valor predeterminado que describiste en (1) del OP)

1 me gusta