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 este evento, evita condições de corrida entre o carregamento do script e a execução do código de inicialização.

event.detail

CampoTipoDescrição
apiobjectReferência para 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 registado depois de o script já ter sido executado, o evento não voltará a ser emitido. 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 a init() como depois de qualquer updateConfig() subsequente.

Quando usar: use este evento para reagir a alterações 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 alteração.

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

  console.log('Utilizador autenticado:', config.viewer?.loggedIn)
  console.log('Utilizador subscritor:', config.viewer?.subscribed)
  console.log('Regras de acesso ativas:', config.access?.games)
})

Eventos de jogo e navegação

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


mindtraining:game:loaded

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

Quando usar: use este evento para acompanhar pageviews internas do jogo, medir que jogos são realmente carregados 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 utilizador começa a interagir realmente com o jogo (por exemplo, primeiro movimento ou primeira entrada).

Quando usar: use este evento para distinguir entre um jogo carregado e um jogo efetivamente jogado, medir ativação ou acompanhar engagement.

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 utilizador conclui um jogo com sucesso.

Quando usar: use este evento para funis completos, análise 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 conclusão
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 utilizador abandona uma sessão ativa sem a concluir.

Quando usar: use este evento para detetar fricção, 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 a jogar”).

Quando usar: use este evento para acompanhar retenção, fluxos de continuação ou verificar se o estado guardado está a funcionar corretamente.

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 deteta que uma superfície (jogo de hoje, arquivo, etc.) está bloqueada para o utilizador.

Quando usar: use este evento para acionar paywalls contextuais, medir procura não satisfeita 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 regista uma visualização navegável relevante para analytics.

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

event.detail

Client integration documentation maintained in-repo.