Nas versões mais recentes do Discourse, removemos completamente o Discourse.SiteSettings da aplicação Javascript. Os únicos lugares onde você o encontrará são para compatibilidade com versões anteriores.
Estamos fazendo isso como parte da nossa migração para o Ember CLI, mas também porque é o correto a se fazer — Discourse.XYZ é essencialmente uma variável global, o que significa que nossas dependências estão espalhadas por toda parte.
Se você é um desenvolvedor de plugins ou temas e usa Discourse.SiteSettings no seu código, agora é a hora de começar a pensar em migrar.
Como atualizar seu código Javascript:
-
Se sua referência for um Controller, Route, Model, Component ou Widget, você pode usar
this.siteSettingsem seu lugar. -
Se seu arquivo estiver em um inicializador, você pode buscar as configurações do site usando o parâmetro do container:
let siteSettings = container.lookup('site-settings:main'); -
Se seu arquivo for um teste qunit, você pode usar
this.siteSettings, mas OBSERVE que seu método de teste precisará ser uma função comum e não uma função de seta, para que othisesteja correto:QUnit.test("test something", function(assert) { this.siteSettings; // funcionará }); QUnit.test("test something", assert => { this.siteSettings; // NÃO funcionará });Na maioria dos casos, você deverá conseguir substituir
assert => {porfunction(assert) {e funcionará corretamente. -
Se seu código estiver em um helper, há uma nova função
helperContext()que você pode importar e usar para obter as configurações do site na sua função de helper. Por favor, use isso apenas em helpers reais!import { helperContext } from "discourse-common/lib/helpers"; function myHelper(x) { let siteSettings = helperContext().siteSettings; } -
Se você estiver incorporando código do Discourse via uma tag script, pode acessar as configurações do site através do container:
<script type="text/discourse-plugin" version="0.1"> let siteSettings = api.container.lookup('site-settings:main'); </script>
Ainda não adicionei avisos de depreciação ao Discourse.SiteSettings porque acho que, no momento, haveria muitos avisos para serem realmente úteis, devido a todos os temas e plugins existentes que ainda não foram atualizados. Assim que uma quantidade considerável desse código for atualizada, adicionarei os avisos para torná-los mais fáceis de identificar.