JS Não Funciona Mais para Componente de Tema

Continuando a discussão de Um pouco de ajuda com um seletor CSS?:

Olá,

Há um tempo fiz este tópico e o JavaScript para criar seletores CSS para níveis de confiança funcionava. Não funciona mais. Este é o JS…


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

export default apiInitializer((api) => {
  const allowedGroups = ["trust_level_4"]; // Adicione os grupos que você deseja segmentar
  const includeUsersField = ["username"]; // Use "id" ou "username"

  api.modifyClass("component:chat/message/info", (SuperClass) => {
    return class extends SuperClass {
      @service currentUser;

      get usernameClasses() {
        if (!this.currentUser) {
          return super.usernameClasses;
        }
        const allowedGroupClasses = this.currentUser.groups
          .filter((g) => allowedGroups.includes(g.name))
          .map((g) => `group--${g.name}`);

        const extraClasses = [
          ...allowedGroupClasses,
          ...includeUsersField.map((f) => `user--${this.currentUser[f]}`),
        ]
          .filter(Boolean)
          .join(" ");

        return super.usernameClasses + " " + extraClasses;
      }
    };
  });
})

E este é o CSS que eu estava usando…

.chat-message-info__username.group–trust_level_4 {
.chat-message-info__username__name {
color: blue;
}
}

Alguma ideia de como posso consertar isso?

Especificamente, existe alguma atualização do Discourse sobre a qual eu deva saber ou isso tem a ver com o tl4 não ser um grupo principal ou algo assim?

Obrigado!

Basta importar o decorador service e ele deverá funcionar:

import { service } from "@ember/service";

Uma vez adicionado, seu @service currentUser será carregado corretamente novamente.

3 curtidas

Editar: Coloquei no script, mas ainda não consigo fazer funcionar.

Você poderia compartilhar algum erro no console do navegador? Isso pode ajudar.

Você poderia tentar adicionar o seguinte CSS após remover o seu atual?

.chat-message-info__username.group--trust_level_4 .chat-message-info__username__name {
  color: blue !important;
}