Acessando a API de um componente

Estou experimentando com temas do Discourse, mas não sou um desenvolvedor web/Javascript. Olhando para alguns componentes de tema de terceiros, tenho esta pergunta.

Em discourse-header-submenus/javascripts/discourse/connectors/above-site-header/header-submenus.js, há este código:

export default {
  setupComponent() {
    // algum código aqui
  },
};

Não há importações no topo do arquivo.

Se eu entendi o Javascript (strict) corretamente, o único contexto ao qual o código dentro de setupComponent() terá acesso são os atributos do objeto em que está sendo avaliado.

Quando olho para este contexto usando console.log(this) dentro da função setupComponent(), parece que não tenho acesso ao objeto api, que é muito útil.

Que pena!

Além disso, eu não saberia como importá-lo corretamente, pois o código wrapper oficial para usar funções da API é versionado e se parece com isto:

import { apiInitializer } from "discourse/lib/api";

export default apiInitializer("0.12.3", api => {
    // código que usa a api aqui
});

Como eu poderia acessar o objeto api de dentro de setComponent()? Ou estou perdendo algo fundamental aqui?

1 curtida

Entendido, é feito assim:

import { withPluginApi } from "discourse/lib/plugin-api";

export default {
    setupComponent() {
        withPluginApi("0.12.3", api => {
            console.log(api.getCurrentUser());
        });
    },
};
2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.