Recursos disponíveis apenas para SCSS, não para JS

Olá,

Na última semana ou mais, tenho personalizado uma instalação do Discourse para uma marca, incluindo fontes fixas, logotipos e ícones.

Para começar, notei que qualquer ativo que eu importava (colocado na pasta assets e importado sob o objeto assets do about.json) ficava imediatamente disponível para uso como variável SCSS, mas levava um minuto ou dois para aparecer em settings.theme_uploads.

Agora, no entanto, eles não aparecem em absoluto em settings.theme_uploads, o que significa que não posso usá-los no meu JavaScript. Se eu remover um ativo, ele também permanece no objeto de configurações. O uso em SCSS permanece inalterado.

Agradeceria muito qualquer ajuda.

Sim, eu também estou um pouco confuso com isso.

Em que ponto é seguro usar uma referência como return settings.theme_uploads.blah em javascript, se é que algum dia é?

Estou recebendo “undefined” para settings.theme_uploads na minha propriedade computada (inicialmente, pelo menos).

Qual é o padrão correto aqui?

Os dados de settings.theme_uploads foram adicionados ao javascript relativamente recentemente (depois que o OP foi escrito, eu acho). Deve ser confiável - nós o usamos em nossos próprios temas/componentes. Você pode explicar em mais detalhes quais problemas você está vendo?

Ah, eu estava perdendo a pasta de assets no meu caminho para o asset, então o link quebrado deve ter “otimizado” o asset sem dúvida:

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

deveria ter sido:

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

Doh!

FYI, estou referenciando isso em Javascript em um Ember Component, por exemplo:

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

Isso geraria um erro de undefined quando o caminho estiver incorreto!

Obrigado por ouvir! @david, desculpe desperdiçar seu tempo.

@hakonbja você resolveu seu problema?