Modifications de la source de données de la fiche utilisateur

Pour le moment, lorsque vous cliquez sur une carte d’utilisateur, nous chargeons /u/david.json, qui est exactement le même point de terminaison que mon profil complet. C’est un peu gaspilleur, car la carte d’utilisateur n’utilise même pas la plupart des données !

Par conséquent, nous allons passer la carte d’utilisateur à une nouvelle route /u/david/card.json. Celle-ci contient juste assez d’informations pour rendre la carte. Dans mes tests, cela rend les cartes d’utilisateur 2 à 3 fois plus rapides qu’auparavant !

Pour le moment, ce changement est masqué par un paramètre du site. Pour l’essayer, accédez à votre console Rails et exécutez :

SiteSetting.enable_new_user_card_route = true

Dans les prochaines semaines, cela sera activé par défaut et le paramètre du site sera supprimé. Cela est actuellement activé sur Meta.

Super ! Que dois-je faire ?

Si vous êtes un utilisateur ou un administrateur de forum, rien ! Vous devriez voir une amélioration des performances des cartes d’utilisateur très bientôt !

Si vous êtes un développeur de plugin, vous devrez peut-être apporter quelques ajustements pour prendre en charge la nouvelle route.

J’utilise des champs personnalisés dans mon plugin et je les affiche sur la carte d’utilisateur

Pas de problème, les champs personnalisés continueront de fonctionner exactement de la même manière.

J’ajoute des données au sérialiseur d’utilisateur et je les utilise dans le profil complet de l’utilisateur

C’est bon, le profil utilisateur continuera d’utiliser l’ancien point de terminaison et tous les appels add_to_serializer existants continueront de fonctionner.

J’ajoute des données au sérialiseur d’utilisateur et je les utilise sur la carte d’utilisateur

D’accord, vous devrez faire un peu de travail. Auparavant, nous avions simplement une structure comme :

class UserSerializer < BasicUserSerializer

Maintenant, nous avons une structure comme :

class UserCardSerializer < BasicUserSerializer
# et
class UserSerializer < UserCardSerializer

Si vous voulez que quelque chose soit inclus dans le point de terminaison de la carte, vous devez l’ajouter au UserCardSerializer. Par exemple, si vous avez un code comme celui-ci :

add_to_serializer(:user, :favourite_forum_software) do
  "discourse"
end

Vous devez le modifier en :

add_to_serializer(:user_card, :favourite_forum_software) do
  "discourse"
end

Le UserSerializer inclura automatiquement tout ce qui se trouve dans le UserCardSerializer, vous pouvez donc effectuer ce changement immédiatement et cela fonctionnera même avec le paramètre du site masqué désactivé.

Pour maintenir la compatibilité avec les versions stable/bêta, ajoutez une vérification pour UserCardSerializer comme ceci :

# TODO : Supprimer le commutateur une fois Discourse 2.4 stable publié
serializer = (defined? UserCardSerializer) ? :user_card : :user 
add_to_serializer(serializer, :favourite_forum_software) do
  "discourse"
end
22 « J'aime »

Great stuff @david. Really excited to see this one. I agree a 100% to the fact that a new serializer was needed to user cards.

I think this change also lays the ground for displaying user cards on the /u route.

7 « J'aime »

It does indeed! Watch this space :eyes:

7 « J'aime »

Ceci est désormais le nouveau paramètre par défaut et le paramètre a été supprimé.

6 « J'aime »