In our company we use discourse for everyday business.
Discourse is deeply integrated in our erp software.
For better organization of topics,our erp holds many kind of topics ids and posts ids.
In some parts of our app we want to show user list of specific topics in discource. (filtered by our citiera).
In our app there is form which users fills and our app has array of filtered topics.
Is there a way to send query string or formdata to discource endpoint among with array of wanted topics ids and to get list of topics in discource. (ideally with predefined order or ordered as array was)
Same needs we have for getting specific lists of posts by providing array of topics ids.
Eu também preciso dessa funcionalidade. No momento, estou fazendo assim, mas isso leva muito tempo.
const selectedTopics = this.selectedTopics
// consome tópicos como IDs e devolve tópicos reais
this.selectedTopicsID.forEach(function(tid,index){
Topic.find(tid,{}).then(results => {
selectedTopics.pushObject(results)
})
});
Estou prestes a reabrir o listcontroller no meu plugin.rb e adicionar um novo endpoint, além de reabrir o topic-list no inicializador do frontend e fazer algo semelhante a isso:
import TopicList from 'discourse/models/topic-list';
const selectedTopics = this.selectedTopics
// consome tópicos como IDs
TopicList.topics_array(this.selectedTopicsID).then(results => selectedTopics.pushObjects(results.topic_list.topics))
No momento, isso ainda tem a desvantagem de não retornar objetos “reais” de Topic, mas acho que adicionar uma linha como esta vai resolver:
Ainda não tenho certeza se essa é a maneira correta de fazer isso e/ou se isso quebra a segurança.
Outra coisa que poderia ser feita: primeiro verificar no store se o registro já está lá e depois carregar apenas o que não está, usando fromMap. Algo semelhante a:
De qualquer forma, isso está ficando muito verboso aqui
Essa é minha solução final; vou encerrar por hoje: