Acessando campos de usuário personalizados via API JavaScript/plugin

Olá, eu estava tentando implementar Our solution for blurring NSFW content - #5 by bartv - mas infelizmente o código não funcionou mais.
Estou meio preso aqui e não consegui encontrar nenhuma documentação para a API JavaScript do Discourse em geral ou como recuperar campos de usuário personalizados.

Tentei adicionar o trecho de código vinculado à seção header.html do tema do meu site.
O objeto acessível em JavaScript const user = api.getCurrentUser(); parece conter uma propriedade custom_fields e não user_fields como está na postagem referenciada.

No entanto, está vazio, ou eu não sei como consultar/preencher corretamente. Tenho a sensação de que precisaria de um plugin Ruby real para acessar esses dados.

Eu realmente apreciaria qualquer ajuda com este problema, ou um guia sobre como especificamente fazer a mesma funcionalidade funcionar novamente.
O recurso que preciso é adicionar uma classe css personalizada ao corpo dependendo de um campo de usuário personalizado.

Obrigado por ler o/

Se você olhar a saída .json de um perfil de usuário, verá o registro user_fields (como https://meta.discourse.org/u/pfaffman.json, exceto que não há campos personalizados aqui). É aí que estão os campos de usuário que você adiciona na UX (eles são, na verdade, um tipo especial de user_custom_field. Os user_custom_fields não parecem estar no registro do usuário em um fluxo de tópicos. Não tenho certeza se eles já estiveram lá e agora sumiram (isso provavelmente seria um bug). Você precisa garantir que seus campos de usuário sejam visíveis nessas configurações (mostrar no cartão do usuário, talvez?).

Pelo que vejo agora, você precisa criar um plugin que adicionará esses campos personalizados ao serializador.

Se você pudesse usar grupos em vez do seu campo de usuário personalizado, talvez resolvesse seu problema.

2 curtidas

É aí que entram os campos do usuário que você adiciona na UX (eles são, na verdade, um tipo especial de user_custom_field)

Entendi, isso explica a nomenclatura das variáveis. Obrigado.

Acho que o endpoint /u/user.json expõe apenas campos públicos, já que é acessível publicamente. Devido à natureza da questão, duvido que as pessoas queiram que suas preferências NSFW sejam expostas em seu cartão de usuário. Assim, vou investigar o uso de grupos como uma solução alternativa primeiro :smiley:

2 curtidas