Я изучаю разработку плагинов и заметил, что в таких случаях, как переводчик Discourse, после получения модели виджета через findAncestorModel() выполняется проверка на существование результата перед продолжением. Я вижу это и в исходном коде, пример:
_getTopicUrl() {
const post = this.findAncestorModel();
return post ? post.get("topic.url") : null;
},
Но также есть случаи, когда мы не проверяем существование модели-предка, несколько строк ниже:
const post = this.findAncestorModel();
const controller = this.register.lookup("controller:topic");
return post
.get("topic.postStream")
.filterUpwards(this.attrs.id)
.then(() => {
controller.updateQueryParams();
});
Насколько надёжно существование результата findAncestorModel? Зависит ли это от того, в каком виджете мы находимся, или же хорошей практикой является всегда обрабатывать null-ответ, даже в ситуациях, когда это кажется крайне маловероятным, например, в меню поста?