Migrando de Discourse.SiteSettings: Um guia de atualização

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.siteSettings em 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 o this esteja 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 => { por function(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.

31 curtidas