Nelle versioni più recenti di Discourse, abbiamo rimosso completamente Discourse.SiteSettings dall’applicazione JavaScript. Gli unici luoghi in cui lo troverete sono per la compatibilità con versioni precedenti.
Stiamo facendo questo come parte della nostra migrazione a Ember CLI, ma anche perché è la cosa giusta da fare: Discourse.XYZ è essenzialmente una variabile globale, il che significa che le nostre dipendenze sono sparse ovunque.
Se sei uno sviluppatore di plugin o temi e usi Discourse.SiteSettings nel tuo codice, è il momento di iniziare a pensare alla migrazione.
Come aggiornare il tuo codice JavaScript:
-
Se il tuo riferimento è un Controller, Route, Model, Component o Widget, puoi usare
this.siteSettingsinvece. -
Se il tuo file si trova in un inizializzatore, puoi cercare le impostazioni del sito utilizzando il parametro del contenitore:
let siteSettings = container.lookup('site-settings:main');. -
Se il tuo file è un test QUnit, puoi usare
this.siteSettings, ma NOTA che il metodo del tuo test dovrà essere una funzione normale e non una funzione freccia in modo chethissia corretto:QUnit.test("test something", function(assert) { this.siteSettings; // funzionerà }); QUnit.test("test something", assert => { this.siteSettings; // NON funzionerà });Nella maggior parte dei casi dovresti essere in grado di sostituire
assert => {confunction(assert) {e funzionerà correttamente. -
Se il tuo codice si trova in un helper, c’è una nuova funzione
helperContext()che puoi importare e usare per ottenere le impostazioni del sito nella tua funzione helper. Usala solo negli helper effettivi!import { helperContext } from "discourse-common/lib/helpers"; function myHelper(x) { let siteSettings = helperContext().siteSettings; } -
Se stai incorporando il codice di Discourse tramite un tag script, puoi accedere alle impostazioni del sito tramite il contenitore:
<script type="text/discourse-plugin" version="0.1"> let siteSettings = api.container.lookup('site-settings:main'); </script>
Non ho ancora aggiunto avvisi di deprecazione per Discourse.SiteSettings perché penso che al momento ci sarebbero troppi avvisi per essere realmente utili a causa di tutti i temi e i plugin esistenti che non sono stati ancora aggiornati. Una volta aggiornato una quantità considerevole di quel codice, aggiungerò gli avvisi per renderli più facili da rilevare.