Acceso a campos de usuario personalizados a través de JavaScript/API de plugin

Hola, estaba intentando implementar Our solution for blurring NSFW content - #5 by bartv - pero desafortunadamente el código ya no funcionaba.
Estoy un poco atascado aquí y no pude encontrar ninguna documentación para la API de JavaScript de Discourse en general o cómo recuperar campos de usuario personalizados.

Intenté agregar el fragmento de código enlazado a la sección header.html en el tema de mi sitio.
El objeto accesible en JavaScript const user = api.getCurrentUser(); parece contener una propiedad custom_fields no user_fields como está en la publicación referenciada.

Sin embargo, está vacío, o no sé cómo consultarlo/rellenarlo correctamente. Tengo la sensación de que necesitaría un plugin de Ruby real para acceder a estos datos.

Realmente agradecería cualquier ayuda con este problema, o una guía sobre cómo hacer que la misma funcionalidad funcione nuevamente.
La característica que necesito es agregar una clase css personalizada al cuerpo dependiendo de un campo de usuario personalizado.

Gracias por leer o/

Si miras la salida .json de un perfil de usuario, verás el registro user_fields (como https://meta.discourse.org/u/pfaffman.json, excepto que aquí no hay campos personalizados). Ahí es donde están los campos de usuario que agregas en la UX (en realidad, son un tipo especial de user_custom_field). Los user_custom_fields no parecen estar en el registro de usuario en un flujo de temas. No estoy seguro de si alguna vez estuvieron allí y ahora se han ido (probablemente sería un error). Debes asegurarte de que tus campos de usuario sean visibles en esas configuraciones (¿mostrar en la tarjeta de usuario, tal vez?).

Por lo que veo ahora, necesitas crear un plugin que agregue esos campos personalizados al serializador.

Si pudieras usar grupos en lugar de tu campo de usuario personalizado, podrías resolver tu problema.

2 Me gusta

Ahí es donde se encuentran los campos de usuario que agregas en la UX (en realidad, son un tipo especial de user_custom_field)

Ya veo, eso explica el nombre de la variable. Gracias.

Creo que el endpoint /u/user.json solo expone campos públicos ya que es accesible públicamente. Debido a la naturaleza del problema, dudo que la gente quiera que sus preferencias NSFW se expongan en su tarjeta de usuario. Por lo tanto, primero investigaré el uso de grupos como solución alternativa :smiley:

2 Me gusta