Nella mia classe del connettore, posso accedere a args e component tramite il metodo shouldRender, che mi permette di ottenere il nome utente corrente e l’ID del post:
import Post from "discourse/models/post";
Post.loadRevision(args.model.id, args.model.version).then((result) => {
const editorUsername = result.username;
doSomethingElse();
});
AGGIORNAMENTO @eviltrout Pensavo di aver risolto, ma ho appena capito che, dato che Post.loadRevision restituisce una Promise, non posso inserirlo dentro shouldRender():
import Post from 'discourse/models/post';
export default {
shouldRender(args, component) {
// restituire una promise non funziona
return Post.loadRevision(args.model.id, args.model.version).then((revision) => {
return args.model.username !== revision.username;
});
},
};
Potresti spostarlo fuori dal connettore in un nuovo componente da inserire e farlo mostrare uno stato “Caricamento…” finché la promise non viene risolta, momento in cui imposti il valore e lo visualizzi.
Grazie, Robin. Il tuo suggerimento era esattamente quello di cui avevo bisogno.
Questo funziona, ma mi chiedo se sia necessaria la chiamata ajax diretta (quando ho seguito il percorso del connettore, avevo accesso al Post ma non alla Revisione; ora che ho seguito il percorso del componente, ho accesso alla Revisione ma non al Post )
{{! javascripts/discourse/components/reply-to-editor.js.es6 }}
import { ajax } from 'discourse/lib/ajax';
export default Ember.Component.extend({
isVisible: true,
didRender() {
if (!this.get('postId')) return;
ajax(`/posts/${this.get('postId')}`).then((post) => {
// mostra il pulsante solo se l'autore della revisione non è l'autore del post
this.set('isVisible', this.get('revisionAuthor') !== post.username);
});
}
});