J’ai regardé le développement de plugins et j’ai remarqué que, dans des cas comme celui du traducteur Discourse, après avoir récupéré un modèle de widget via findAncestorModel(), il y a une vérification pour s’assurer que le résultat existe avant de poursuivre. Je vois cela aussi dans le code source, par exemple :
_getTopicUrl() {
const post = this.findAncestorModel();
return post ? post.get("topic.url") : null;
},
Mais il existe aussi des cas où nous ne vérifions pas l’existence du modèle ancêtre, quelques lignes plus bas :
const post = this.findAncestorModel();
const controller = this.register.lookup("controller:topic");
return post
.get("topic.postStream")
.filterUpwards(this.attrs.id)
.then(() => {
controller.updateQueryParams();
});
Quelle est la fiabilité de l’existence du résultat de findAncestorModel ? Cela dépend-il du widget dans lequel nous nous trouvons, ou est-il bon de toujours gérer une réponse null, même dans des situations où cela semble très improbable, comme dans le menu du message ?