Se éloigner de Discourse.SiteSettings : un guide de mise à niveau

Dans les versions les plus récentes de Discourse, nous avons complètement supprimé Discourse.SiteSettings de l’application JavaScript. Vous ne le trouverez désormais que pour des raisons de compatibilité ascendante.

Nous procédons à cette modification dans le cadre de notre migration vers Ember CLI, mais aussi parce que c’est la bonne chose à faire : Discourse.XYZ est essentiellement une variable globale, ce qui signifie que nos dépendances sont dispersées un peu partout.

Si vous êtes un développeur de plugins ou de thèmes et que vous utilisez Discourse.SiteSettings dans votre code, il est temps de commencer à envisager une migration.

Comment mettre à jour votre code JavaScript :

  • Si votre référence concerne un Controller, une Route, un Model, un Component ou un Widget, vous pouvez utiliser this.siteSettings à la place.

  • Si votre fichier se trouve dans un initialiseur, vous pouvez récupérer les paramètres du site en utilisant le paramètre du conteneur : let siteSettings = container.lookup('site-settings:main');

  • Si votre fichier est un test QUnit, vous pouvez utiliser this.siteSettings, mais NOTEZ que votre méthode de test doit être une fonction classique et non une fonction fléchée pour que this soit correct :

    QUnit.test("test something", function(assert) { 
      this.siteSettings; // fonctionnera
    });
    
    QUnit.test("test something", assert => { 
      this.siteSettings; // NE fonctionnera PAS
    });
    

    Dans la plupart des cas, vous pourrez remplacer assert => { par function(assert) { et tout fonctionnera correctement.

  • Si votre code se trouve dans un helper, une nouvelle fonction helperContext() est disponible. Vous pouvez l’importer et l’utiliser pour récupérer les paramètres du site dans votre fonction d’helper. Veuillez uniquement l’utiliser dans des helpers réels !

    import { helperContext } from "discourse-common/lib/helpers";
    
    function myHelper(x) {
       let siteSettings = helperContext().siteSettings;
    }
    
  • Si vous intégrez du code Discourse via une balise script, vous pouvez accéder aux paramètres du site via le conteneur :

    <script type="text/discourse-plugin" version="0.1">
      let siteSettings = api.container.lookup('site-settings:main');
    </script>
    

Je n’ai pas encore ajouté d’avertissements de dépréciation pour Discourse.SiteSettings, car je pense qu’actuellement il y aurait trop d’avertissements pour qu’ils soient réellement utiles, étant donné tous les thèmes et plugins existants qui n’ont pas encore été mis à jour. Une fois qu’une quantité considérable de ce code aura été mise à jour, j’ajouterai les avertissements pour faciliter leur détection.

31 « J'aime »