Afficher la liste des sujets par tableau d'identifiants de sujets

J’ai également besoin de cette fonctionnalité. Pour l’instant, je procède comme suit, mais cela prend beaucoup trop de temps.

    const selectedTopics = this.selectedTopics
     // Consomme les IDs de sujets et renvoie les vrais sujets
     this.selectedTopicsID.forEach(function(tid,index){
       Topic.find(tid,{}).then(results => {
         selectedTopics.pushObject(results)
       })
     });

Je suis sur le point de réouvrir le listcontroller dans mon plugin.rb pour ajouter un nouveau point de terminaison (endpoint), et de réouvrir topic-list dans l’initialiseur du frontend pour faire quelque chose de similaire à ceci :

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/models/topic-list.js.es6#L129
Mais il doit bien y avoir un moyen plus simple de faire cela. N’existe-t-il vraiment aucun point de terminaison pour récupérer plusieurs sujets par ID en une seule fois ?
Je serais très reconnaissant pour de l’aide :smiley:
EDIT : Voici comment j’ai résolu ce problème pour moi :

Voici comment cela peut être utilisé.

import TopicList from 'discourse/models/topic-list';
    const selectedTopics = this.selectedTopics
    // Consomme les IDs de sujets
    TopicList.topics_array(this.selectedTopicsID).then(results => selectedTopics.pushObjects(results.topic_list.topics))

Pour l’instant, cela présente toujours l’inconvénient de ne pas renvoyer de vrais objets Topic, mais je suppose qu’ajouter une ligne comme celle-ci résoudra le problème :

Je suis toujours incertain de savoir si c’est la bonne méthode et/ou si cela compromet la sécurité.
Une autre chose qui pourrait être faite : vérifier d’abord dans le magasin (store) si l’enregistrement existe déjà, puis ne charger que ce qui manque, en utilisant fromMap. Similaire à :

Bref, cela devient trop verbeux ici :smiley:
Voici ma solution finale, je vais m’arrêter là pour aujourd’hui :