Skip to content

Événements

La plateforme émet des CustomEvents du navigateur sur window. Tous les événements sont préfixés par mindtraining: et leur payload est toujours disponible dans event.detail.


mindtraining:ready

Déclenché quand : le script a fini de se charger et l'API globale MindtrainingPlatform est disponible sur window.

Quand l'utiliser : c'est le hook recommandé pour appeler init. En écoutant cet événement, vous évitez les conditions de course entre le chargement du script et l'exécution de votre code d'initialisation.

event.detail

ChampTypeDescription
apiobjectRéférence vers window.MindtrainingPlatform
js
window.addEventListener('mindtraining:ready', function (event) {
  // event.detail.api === window.MindtrainingPlatform
  MindtrainingPlatform.init('mindtraining', {
    viewer: { loggedIn: false },
  })
})

Le script est déjà chargé ? Si votre listener est enregistré après l'exécution du script, l'événement ne sera plus émis. Utilisez ce pattern de garde :

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

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

mindtraining:config

Déclenché quand : la configuration de la plateforme est mise à jour, à la fois après l'appel initial à init() et après tout updateConfig() ultérieur.

Quand l'utiliser : utilisez cet événement pour réagir aux changements de configuration provenant de l'extérieur de la plateforme, par exemple pour synchroniser votre propre état d'interface.

event.detail

L'objet PlatformInitConfig normalisé complet au moment du changement.

ChampTypeDescription
viewerobjectParamètres courants du visiteur/utilisateur
viewer.userIdstring | nullID de l'utilisateur actif
viewer.loggedInbooleanIndique si l'utilisateur est authentifié
viewer.subscribedbooleanIndique si l'utilisateur a un abonnement actif
uiobjectParamètres d'interface courants
ui.mode'web' | 'app'Mode de rendu
ui.actionsobjectCallbacks d'actions enregistrés
accessobjectRègles d'accès courantes par type de jeu
js
window.addEventListener('mindtraining:config', function (event) {
  const config = event.detail

  console.log('Utilisateur connecté :', config.viewer?.loggedIn)
  console.log('Utilisateur abonné :', config.viewer?.subscribed)
  console.log("Règles d'accès actives :", config.access?.games)
})

Événements de jeu et de navigation

Les événements suivants sont émis pendant le gameplay et la navigation. Utilisez-les pour l'analytics, le tracking, les intégrations host et l'observabilité.


mindtraining:game:loaded

Déclenché quand : une session ou un écran de jeu est prêt pour l'interaction.

Quand l'utiliser : utilisez cet événement pour suivre les pageviews internes, mesurer quels jeux se chargent réellement ou déclencher de la logique côté host selon le type de jeu.

event.detail

ChampTypeDescription
gameTypestringType de jeu (par ex. crossword, sudoku)
gameIdstringIdentifiant unique du jeu
variantstringVariante du jeu (par ex. default, mini)
routestringRoute interne
sourcestringSource du jeu (par ex. today, archive)
js
window.addEventListener('mindtraining:game:loaded', function (event) {
  Analytics.track('mindtraining_game_loaded', event.detail)
})

mindtraining:game:playing

Déclenché quand : l'utilisateur commence à interagir réellement avec le jeu (premier mouvement ou première saisie).

Quand l'utiliser : utilisez cet événement pour distinguer un jeu chargé d'un jeu réellement joué, mesurer l'activation ou suivre l'engagement.

event.detail

ChampTypeDescription
gameTypestringType de jeu
gameIdstringIdentifiant unique du jeu
variantstringVariante du jeu
startedAtstringHorodatage ISO 8601 du début
js
window.addEventListener('mindtraining:game:playing', function (event) {
  Analytics.track('mindtraining_game_playing', event.detail)
})

mindtraining:game:completed

Déclenché quand : l'utilisateur termine un jeu avec succès.

Quand l'utiliser : utilisez cet événement pour les funnels complets, l'analyse de difficulté ou les classements côté host.

event.detail

ChampTypeDescription
gameTypestringType de jeu
gameIdstringIdentifiant unique du jeu
variantstringVariante du jeu
completedAtstringHorodatage ISO 8601 de fin
durationMsnumberDurée de la session en millisecondes
scorenumberScore final (le cas échéant)
js
window.addEventListener('mindtraining:game:completed', function (event) {
  Analytics.track('mindtraining_game_completed', event.detail)
})

mindtraining:game:abandoned

Déclenché quand : l'utilisateur quitte une session active sans terminer le jeu.

Quand l'utiliser : utilisez cet événement pour détecter des frictions, mesurer l'abandon par jeu ou variante, ou améliorer les parcours de rétention.

event.detail

ChampTypeDescription
gameTypestringType de jeu
gameIdstringIdentifiant unique du jeu
variantstringVariante du jeu
durationMsnumberTemps passé avant abandon
progressnumberProgression (0–1) au moment de l'abandon
js
window.addEventListener('mindtraining:game:abandoned', function (event) {
  Analytics.track('mindtraining_game_abandoned', event.detail)
})

mindtraining:game:state:saved

Déclenché quand : l'état du jeu est persisté (par exemple pour la fonctionnalité « reprendre la partie »).

Quand l'utiliser : utilisez cet événement pour suivre la rétention, les parcours de reprise ou vérifier que la sauvegarde fonctionne.

event.detail

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

mindtraining:access:blocked

Déclenché quand : la plateforme détecte qu'une surface (jeu du jour, archive, etc.) est bloquée pour l'utilisateur.

Quand l'utiliser : utilisez cet événement pour déclencher un paywall contextuel, mesurer une demande non satisfaite ou adapter les messages du host.

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

Déclenché quand : la route interne de la plateforme change (par ex. navigation dans la SPA).

Quand l'utiliser : utilisez cet événement pour des pageviews virtuelles ou pour synchroniser l'analytics avec la navigation interne.

event.detail

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

mindtraining:pageview

Déclenché quand : la plateforme enregistre une vue navigable pertinente pour l'analytics.

Quand l'utiliser : utilisez cet événement pour le suivi des pageviews, le reporting par section et type de jeu, ou l'attribution de la navigation interne.

event.detail

Client integration documentation maintained in-repo.