Assets only available to SCSS not JS

Hello,

For the last week or so I’ve been styling a Discourse setup for a brand which includes fixed fonts, logos and icons.

To begin with I noticed that any assets I imported (place in assets folder and import under the assets object of about.json) became immediately available to use as a SCSS variable but took a minute or two to show up in settings.theme_uploads.

Now however, they don’t show up at all in settings.theme_uploads which means I can’t use them in my JavaScript. If I remove an asset it also stays in the settings object. The SCSS usage stays unaffected.

Help would be greatly appreciated.

1 « J'aime »

Oui, je suis un peu confus par cela aussi.

À quel moment est-il sûr d’utiliser une référence comme return settings.theme_uploads.blah en javascript, si jamais ?

J’obtiens « undefined » pour settings.theme_uploads dans ma propriété calculée (initialement au moins).

Quel est le bon modèle ici ?

1 « J'aime »

Les données settings.theme_uploads ont été ajoutées au javascript relativement récemment (après la rédaction de l’OP, je pense). Elles devraient être fiables - nous les utilisons dans nos propres thèmes/composants. Pouvez-vous expliquer plus en détail les problèmes que vous rencontrez ?

3 « J'aime »

Ah, il me manquait le dossier des assets dans mon chemin vers l’asset, donc le lien brisé avait sans doute « optimisé » l’asset :

{
  "name": "Cool Theme Component",
  "about_url": "",
  "component": true,
  "assets": {
    "background": "background.png"
  }
}

aurait dû être :

{
  "name": "Cool Theme Component",
  "about_url": "",
  "component": true,
  "assets": {
    "background": "assets/background.png"
  }
}

Doh !

Pour information, je référence ceci en Javascript dans un composant Ember, par exemple :

  @computed
  backgroundImage() {
    return settings.theme_uploads.background;
  }

Cela lèverait une erreur undefined lorsque le chemin est incorrect !

Merci de m’avoir écouté ! @david, désolé d’avoir perdu votre temps.

@hakonbja, avez-vous résolu votre problème ?

2 « J'aime »