É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
| Champ | Type | Description |
|---|---|---|
api | object | Référence vers window.MindtrainingPlatform |
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 :
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.
| Champ | Type | Description |
|---|---|---|
viewer | object | Paramètres courants du visiteur/utilisateur |
viewer.userId | string | null | ID de l'utilisateur actif |
viewer.loggedIn | boolean | Indique si l'utilisateur est authentifié |
viewer.subscribed | boolean | Indique si l'utilisateur a un abonnement actif |
ui | object | Paramètres d'interface courants |
ui.mode | 'web' | 'app' | Mode de rendu |
ui.actions | object | Callbacks d'actions enregistrés |
access | object | Règles d'accès courantes par type de jeu |
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
| Champ | Type | Description |
|---|---|---|
gameType | string | Type de jeu (par ex. crossword, sudoku) |
gameId | string | Identifiant unique du jeu |
variant | string | Variante du jeu (par ex. default, mini) |
route | string | Route interne |
source | string | Source du jeu (par ex. today, archive) |
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
| Champ | Type | Description |
|---|---|---|
gameType | string | Type de jeu |
gameId | string | Identifiant unique du jeu |
variant | string | Variante du jeu |
startedAt | string | Horodatage ISO 8601 du début |
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
| Champ | Type | Description |
|---|---|---|
gameType | string | Type de jeu |
gameId | string | Identifiant unique du jeu |
variant | string | Variante du jeu |
completedAt | string | Horodatage ISO 8601 de fin |
durationMs | number | Durée de la session en millisecondes |
score | number | Score final (le cas échéant) |
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
| Champ | Type | Description |
|---|---|---|
gameType | string | Type de jeu |
gameId | string | Identifiant unique du jeu |
variant | string | Variante du jeu |
durationMs | number | Temps passé avant abandon |
progress | number | Progression (0–1) au moment de l'abandon |
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
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
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
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