Skip to content

Eventos

A plataforma emite CustomEvents do navegador em window. Todos os eventos usam o prefixo mindtraining: e o payload está sempre disponível em event.detail.


mindtraining:ready

Disparado quando: o script terminou de carregar e a API global MindtrainingPlatform está disponível em window.

Quando usar: este é o hook recomendado para chamar init. Ao escutar esse evento, você evita condições de corrida entre o carregamento do script e a execução do seu código de inicialização.

event.detail

CampoTipoDescrição
apiobjectReferência a window.MindtrainingPlatform
js
window.addEventListener('mindtraining:ready', function (event) {
  // event.detail.api === window.MindtrainingPlatform
  MindtrainingPlatform.init('mindtraining', {
    viewer: { loggedIn: false },
  })
})

O script já carregou? Se o listener for registrado depois que o script já tiver sido executado, o evento não será disparado novamente. Use este padrão de guarda:

js
function initializeMindtraining() {
  MindtrainingPlatform.init('mindtraining', {
    viewer: { loggedIn: false },
  })
}

if (window.MindtrainingPlatform) {
  initializeMindtraining()
} else {
  window.addEventListener('mindtraining:ready', initializeMindtraining, { once: true })
}

mindtraining:config

Disparado quando: a configuração da plataforma é atualizada, tanto após a chamada inicial de init() quanto após qualquer updateConfig() subsequente.

Quando usar: use este evento para reagir a mudanças de configuração feitas fora da plataforma, por exemplo para sincronizar o estado da sua própria UI.

event.detail

O objeto PlatformInitConfig normalizado completo no momento da mudança.

CampoTipoDescrição
viewerobjectConfigurações atuais do visualizador/usuário
viewer.userIdstring | nullID do usuário ativo
viewer.loggedInbooleanSe o usuário está autenticado
viewer.subscribedbooleanSe o usuário tem uma assinatura ativa
uiobjectConfigurações atuais de UI
ui.mode'web' | 'app'Modo de renderização
ui.actionsobjectCallbacks de ações registradas
accessobjectRegras atuais de acesso por tipo de jogo
js
window.addEventListener('mindtraining:config', function (event) {
  const config = event.detail

  console.log('Usuário autenticado:', config.viewer?.loggedIn)
  console.log('Usuário assinante:', config.viewer?.subscribed)
  console.log('Regras de acesso ativas:', config.access?.games)
})

Eventos de jogo e navegação

Os eventos a seguir são emitidos durante a jogabilidade e a navegação. Use-os para analytics, tracking, integrações do host e observabilidade.


mindtraining:game:loaded

Disparado quando: uma sessão ou tela de jogo está pronta para interação.

Quando usar: use este evento para acompanhar pageviews internas do jogo, medir quais jogos realmente carregam ou acionar lógica do host com base no tipo de jogo.

event.detail

CampoTipoDescrição
gameTypestringTipo de jogo (ex. crossword, sudoku)
gameIdstringIdentificador único do jogo
variantstringVariante do jogo (ex. default, mini)
routestringRota interna
sourcestringOrigem do jogo (ex. today, archive)
js
window.addEventListener('mindtraining:game:loaded', function (event) {
  Analytics.track('mindtraining_game_loaded', event.detail)
})

mindtraining:game:playing

Disparado quando: o usuário começa a interagir de verdade com o jogo (por exemplo, primeiro movimento ou primeira entrada).

Quando usar: use este evento para diferenciar um jogo carregado de um jogo realmente jogado, medir ativação ou acompanhar engajamento.

event.detail

CampoTipoDescrição
gameTypestringTipo de jogo
gameIdstringIdentificador único do jogo
variantstringVariante do jogo
startedAtstringTimestamp ISO 8601 do início
js
window.addEventListener('mindtraining:game:playing', function (event) {
  Analytics.track('mindtraining_game_playing', event.detail)
})

mindtraining:game:completed

Disparado quando: o usuário conclui um jogo com sucesso.

Quando usar: use este evento para funis completos, analytics de dificuldade ou ranking/gamificação do lado host.

event.detail

CampoTipoDescrição
gameTypestringTipo de jogo
gameIdstringIdentificador único do jogo
variantstringVariante do jogo
completedAtstringTimestamp ISO 8601 de término
durationMsnumberDuração da sessão em milissegundos
scorenumberPontuação final (quando aplicável)
js
window.addEventListener('mindtraining:game:completed', function (event) {
  Analytics.track('mindtraining_game_completed', event.detail)
})

mindtraining:game:abandoned

Disparado quando: o usuário abandona uma sessão ativa sem concluir o jogo.

Quando usar: use este evento para detectar atrito, medir abandono por jogo ou variante, ou melhorar fluxos de retenção.

event.detail

CampoTipoDescrição
gameTypestringTipo de jogo
gameIdstringIdentificador único do jogo
variantstringVariante do jogo
durationMsnumberTempo gasto antes do abandono
progressnumberProgresso (0–1) no momento do abandono
js
window.addEventListener('mindtraining:game:abandoned', function (event) {
  Analytics.track('mindtraining_game_abandoned', event.detail)
})

mindtraining:game:state:saved

Disparado quando: o estado do jogo é persistido (por exemplo, para a funcionalidade de “continuar jogando”).

Quando usar: use este evento para acompanhar retenção, fluxos de continuação ou verificar se o estado salvo está funcionando.

event.detail

js
window.addEventListener('mindtraining:game:state:saved', function (event) {
  Analytics.track('mindtraining_game_state_saved', event.detail)
})

mindtraining:access:blocked

Disparado quando: a plataforma detecta que uma superfície (jogo de hoje, arquivo etc.) está bloqueada para o usuário.

Quando usar: use este evento para acionar paywalls contextuais, medir demanda não atendida ou personalizar mensagens do host com base no motivo do bloqueio.

event.detail

js
window.addEventListener('mindtraining:access:blocked', function (event) {
  Analytics.track('mindtraining_access_blocked', event.detail)
  if (event.detail.blockedReason === 'subscription_required') {
    Paywall.show({ context: 'game_archive' })
  }
})

mindtraining:route:changed

Disparado quando: a rota interna da plataforma muda (por exemplo, navegação dentro da SPA).

Quando usar: use este evento para pageviews virtuais ou para sincronizar analytics com a navegação interna da plataforma.

event.detail

js
window.addEventListener('mindtraining:route:changed', function (event) {
  Analytics.track('mindtraining_route_changed', event.detail)
})

mindtraining:pageview

Disparado quando: a plataforma registra uma visualização navegável relevante para analytics.

Quando usar: use este evento para pageview tracking, relatórios por seção e tipo de jogo ou atribuição da navegação interna da SPA.

event.detail

Client integration documentation maintained in-repo.