Ho bisogno anch’io di questa funzionalità. Al momento la sto implementando in questo modo, ma ci vuole troppo tempo.
const selectedTopics = this.selectedTopics
//consuma gli ID dei topic e restituisce i topic reali
this.selectedTopicsID.forEach(function(tid,index){
Topic.find(tid,{}).then(results => {
selectedTopics.pushObject(results)
})
});
Sto per riaprire il listcontroller nel mio plugin.rb e aggiungere un nuovo endpoint, oltre a riaprire il topic-list nell’inizializzatore del frontend, per fare qualcosa di simile a questo:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/models/topic-list.js.es6#L129
Ma deve esserci un modo più semplice per farlo. Esiste davvero ancora un endpoint per recuperare i topic in blocco tramite ID?
Sarei molto grato per un aiuto ![]()
EDIT: Ecco come ho risolto questo problema per me:
https://github.com/spirobel/projects/commit/b514a366f05005888805fc2f57118dfd9fd61fa1
Ecco come può essere utilizzato.
import TopicList from 'discourse/models/topic-list';
const selectedTopics = this.selectedTopics
//consuma gli ID dei topic
TopicList.topics_array(this.selectedTopicsID).then(results => selectedTopics.pushObjects(results.topic_list.topics))
Al momento questo ha ancora lo svantaggio di non restituire oggetti “veri” di tipo Topic, ma immagino che aggiungere una riga come questa lo risolverà:
Sono ancora incerto se questo sia il modo corretto di procedere e/o se ciò comprometta la sicurezza.
Un’altra cosa che si potrebbe fare: controllare prima nello store se il record è già presente e poi caricare solo ciò che manca, utilizzando fromMap. Simile a:
Comunque, sto diventando troppo verboso qui ![]()
Questa è la mia soluzione finale; chiudo qui la giornata: