J’essaie de mettre à jour notre composant de thème personnalisé selon la nouvelle norme après l’avis de dépréciation et je n’arrive pas à comprendre comment afficher des choses différentes pour les utilisateurs mobiles dans ce paramètre.
Le guide des thèmes ne mentionne rien à ce sujet, le seul post pertinent que j’ai trouvé est api.renderInOutlet not rendering? - #3 by NateDhaliwal qui utilise this.site.mobileView, j’ai donc supposé que quelque chose comme ce qui suit devrait fonctionner :
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer("1.8.0", (api) => {
api.renderInOutlet(
"composer-after-save-or-cancel",
`<template>
{{#if this.site.mobileView}}
Mobile !
{{else}}
Normal !
{{/if}}
</template>`
);
});
Mais je ne vois que le contenu normal… Je rate évidemment quelque chose de basique…
Non. Le décorateur @service n’est disponible que dans les classes Ember comme les Composants ou les Services. Si le <template>...</template> a été refactorisé en un composant séparé, alors vous pouvez utiliser le décorateur. Comme apiInitializer() n’est qu’une fonction, le service doit être accédé comme du JS normal.
C’est aussi drôle de voir comment (au moins cette saveur de) JS moderne ressemble de plus en plus au Java d’entreprise dans lequel je travaillais (début des années 2010)