Accéder à l'API depuis un composant

Je me débrouille avec les thèmes Discourse mais je ne suis pas développeur web/Javascript. En regardant certains composants de thème tiers, j’ai cette question.

Dans discourse-header-submenus/javascripts/discourse/connectors/above-site-header/header-submenus.js, il y a ce code :

export default {
  setupComponent() {
    // some code here
  },
};

Il n’y a pas d’importations en haut du fichier.

Si je comprends bien le JavaScript (strict), le seul contexte auquel le code dans setupComponent() aura accès sont les attributs de l’objet sur lequel il est évalué.

Lorsque je regarde ce contexte en utilisant console.log(this) dans la fonction setupComponent(), il semble que je n’aie pas accès à l’objet api très pratique.

C’est dommage !

De plus, je ne saurais pas comment l’importer correctement car le code wrapper officiel pour utiliser les fonctions api est versionné et ressemble à ceci :

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

export default apiInitializer("0.12.3", api => {
    // code qui utilise l'api ici
});

Comment pourrais-je accéder à l’objet api depuis setComponent() ? Ou est-ce que je manque quelque chose de fondamental ici ?

1 « J'aime »

Compris, c’est fait comme ça :

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

export default {
    setupComponent() {
        withPluginApi("0.12.3", api => {
            console.log(api.getCurrentUser());
        });
    },
};
2 « J'aime »

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