Tenho me dedicado ao desenvolvimento de plugins e percebi que, em casos como o do discourse translator, após recuperar um modelo de widget via findAncestorModel(), há uma verificação de existência do resultado antes de prosseguir. Vejo isso também no código-fonte, exemplo:
_getTopicUrl() {
const post = this.findAncestorModel();
return post ? post.get("topic.url") : null;
},
Mas também existem casos em que não verificamos a existência do modelo ancestral, algumas linhas abaixo:
const post = this.findAncestorModel();
const controller = this.register.lookup("controller:topic");
return post
.get("topic.postStream")
.filterUpwards(this.attrs.id)
.then(() => {
controller.updateQueryParams();
});
Quão confiável é a existência do resultado de findAncestorModel? Isso depende do widget em que estamos, ou é boa prática sempre lidar com uma resposta nula, mesmo em situações em que parece muito improvável, como no menu do post?