# Események

> Az `on()` és az `off()` használatával figyelheti a pénztár megnyitását, bezárását és a hozzájárulás rögzítését, valamint megismerheti az eseményenként egy figyelő szabályát.

A pénztár visszajelzi az oldalának, mit csinál. Az `on()` használatával iratkozhat fel:

```js
entase.on('checkout.ready', payload => {
  console.log('checkout open for', payload.context.eventID);
});
```

## Eseménynevenként egy figyelő

Az `on()` eseménynevenként **egy** visszahívást tárol. Ha ugyanahhoz a névhez egy második visszahívást regisztrál, az felülírja az elsőt – nem hozzáadja:

```js
entase.on('checkout.closed', a);
entase.on('checkout.closed', b);   // a megszűnik; csak b fut le
```

Az `off()` eltávolítja az adott névhez regisztrált visszahívást. Figyelmen kívül hagy minden neki átadott visszahívást, ezért az `off('checkout.closed', b)` és az `off('checkout.closed')` ugyanazt teszi.

Ha az oldal több része is ugyanarra az eseményre reagál, regisztráljon egy visszahívást, és azon belül ossza szét a kezelést.

## Feliratkozás több eseményre egyszerre

Mindkét metódus szóközzel elválasztott karakterláncot vagy nevek tömbjét fogadja el, és ugyanazt a visszahívást regisztrálja mindegyikhez:

```js
entase.on('checkout.ready checkout.closed', payload => {
  console.log(payload.name);
});

entase.off(['checkout.ready', 'checkout.closed']);
```

## A payload

Minden visszahívás egy objektumot kap:

| Mező | Típus | Leírás |
|---|---|---|
| `name` | string | Az esemény neve; akkor hasznos, ha egy visszahívás többet is kezel. |
| `context` | object | Az `eventID` értéket tartalmazza – azt az eseményt, amelyhez ez a pénztár tartozik. |
| `data` | object | Eseményspecifikus részletek. |

## Elérhető események

| Név | Mikor aktiválódik |
|---|---|
| `checkout.ready` | A pénztár betöltődött, és készen áll az interakcióra. Ekkor adja át a kliens a `book()` számára megadott `clientContext` értéket is. |
| `checkout.closed` | A pénztár bezárult. A kliens lebontja a panelt vagy az ablakot, és törli a hátteret. |
| `checkout.consent` | A látogató válaszolt a feltételekről szóló értesítésre. A `data.consent` értéke `true`, ha elfogadta őket, és a kliens megjegyzi ezt, így a lépés legközelebb kimarad. |

```js
entase.on('checkout.closed', () => {
  document.body.classList.remove('checkout-open');
});

entase.on('checkout.consent', payload => {
  if (payload.data.consent) console.log('terms accepted');
});
```

## A figyelők túlélik az egyedi foglalásokat

A figyelők a példányhoz tartoznak, nem egy foglaláshoz. A kliens létrehozása után egyszer regisztrálja őket, és minden `book()` hívásra érvényesek lesznek. A foglalások megkülönböztetéséhez használja a `payload.context.eventID` értéket:

```js
const entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY' });

entase.on('checkout.closed', payload => {
  refreshAvailability(payload.context.eventID);
});
```

A `destroy()` meghívása leállítja mindet – a példány teljesen leállítja a pénztárból érkező üzenetek figyelését.

## A más forrásból érkező üzeneteket figyelmen kívül hagyja

A kliens csak az Entase checkout eredetéről fogad el üzeneteket, így az oldalon zajló, nem kapcsolódó `postMessage` forgalom soha nem jut el a visszahívásokhoz.
