Existe alguma forma de escutar o evento de login do usuário usando o componente Theme

Temor que isso não seja possível.

Essas propriedades não possuem setters; mesmo que tivessem, suas alterações só se aplicariam temporariamente na primeira janela. Assim que o usuário visitar a segunda aba, os dados serão baseados no que está armazenado no banco de dados. Os temas não têm acesso ao backend; eles só podem alterar o frontend.

O que você pode fazer é adicionar um hash ao seu link e verificá-lo da seguinte maneira.

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

export default {
  name: "first-login-bootbox",
  initialize() {
    withPluginApi("0.8", api => {
      const user = api.getCurrentUser();
      if (!user) return;

      if (
        !user.read_first_notification &&
        !user.enforcedSecondFactor &&
        !window.location.hash
      ) {
        const text = `Lorem ipsum dolor sit amet <a href="http://localhost:3000/new-topic#some-hash" target="_blank">Link</a>, consectetur adipiscing elit, sed do eiusmod tempor`;
        bootbox.alert(text);
      }
    });
  }
};

Não tenho certeza se vincular a “/new-topic” em sua postagem foi apenas um exemplo ou se é isso que você deseja fazer. Se for o resultado desejado, então você tem outro problema. Mesmo que o bootbox não seja exibido na página com o hash, eles ainda verão isso…

…e o compositor não será aberto, o que faz sentido, pois é muito inesperado para um usuário começar a digitar um tópico em sua primeira visualização de página imediatamente.

Posso perguntar o que você está tentando realizar aqui? Você está tentando informar o usuário de algo ou outro?

A maneira como vi isso feito em outros sites é editar a mensagem de boas-vindas, mas se essa for uma opção, existem alternativas.

Aqui está o que sugiro:

  1. crie um tópico e adicione todas as informações que deseja lá
  2. publique esse tópico
  3. vincule a esse tópico no bootbox e abra esse link em uma nova aba.

Dessa forma, quando o usuário clicar no link, verá algo assim (sem a sobreposição)

Assim que terminarem com essa página, podem voltar para a primeira aba, fechar o bootbox, ler a primeira notificação e continuar usando o site.

Dessa forma, você nem precisa adicionar/verificar um hash. Aqui está um exemplo de trecho

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

export default {
  name: "first-login-bootbox",
  initialize() {
    withPluginApi("0.8", api => {
      const user = api.getCurrentUser();
      if (!user) return;

      if (!user.read_first_notification && !user.enforcedSecondFactor) {
        const text = `Lorem ipsum dolor sit amet <a href="http://my.site.com/pub/bentley-flying-spur-s-production-milestone" target="_blank">Link</a>, consectetur adipiscing elit, sed do eiusmod tempor`;
        bootbox.alert(text);
      }
    });
  }
};