# Avvenimenti

> Isma' għall-ftuħ, l-għeluq u r-reġistrazzjoni tal-kunsens tal-checkout b'`on()` u `off()`, u fhim ir-regola ta' listener wieħed għal kull avveniment.

Il-checkout jirrapporta lill-paġna tiegħek x'qed jagħmel. Abbona b'`on()`:

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

## Listener wieħed għal kull isem ta' avveniment

`on()` taħżen callback **wieħed** għal kull isem ta' avveniment. Jekk tirreġistra callback ieħor għall-istess isem, dan jissostitwixxi l-ewwel wieħed – ma jiżdiedx miegħu:

```js
entase.on('checkout.closed', a);
entase.on('checkout.closed', b);   // a m'għadux hemm; b biss jiġi eżegwit
```

`off()` tneħħi kull ma huwa rreġistrat għal isem. Tinjoraw kwalunkwe callback li tgħaddilha, għalhekk `off('checkout.closed', b)` u `off('checkout.closed')` jagħmlu l-istess ħaġa.

Jekk diversi partijiet tal-paġna tiegħek jeħtieġ li jirreaġixxu għall-istess avveniment, irreġistra callback wieħed u qassam l-azzjoni minn ġewwa fih.

## Abbona għal diversi avvenimenti f'daqqa

Iż-żewġ metodi jaċċettaw string b'ismijiet separati bi spazju jew array ta' ismijiet, u jirreġistraw l-istess callback għal kull wieħed:

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

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

## Il-payload

Kull callback jirċievi oġġett wieħed:

| Qasam | Tip | Deskrizzjoni |
|---|---|---|
| `name` | string | L-isem tal-avveniment, utli meta callback wieħed jimmaniġġja diversi avvenimenti. |
| `context` | object | Fih `eventID` – l-avveniment li dan il-checkout jappartjeni għalih. |
| `data` | object | Dettall speċifiku għall-avveniment. |

## Avvenimenti disponibbli

| Isem | Meta jiġi attivat |
|---|---|
| `checkout.ready` | Il-checkout tgħabba u huwa lest għall-interazzjoni. Dan huwa wkoll meta l-client jgħaddi l-`clientContext` li għaddejt lil `book()`. |
| `checkout.closed` | Il-checkout ingħalaq. Il-client ineħħi l-pannell jew it-tieqa u jneħħi l-isfond. |
| `checkout.consent` | Il-viżitatur wieġeb għall-avviż tat-termini. `data.consent` hija `true` meta jaċċettaw, u l-client jiftakar dan sabiex il-pass jinqabeż id-darba li jmiss. |

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

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

## Il-listeners jibqgħu attivi bejn bookings individwali

Il-listeners jappartjenu lill-istanza, mhux lil booking. Irreġistrahom darba biss, wara li toħloq il-client, u japplikaw għal kull sejħa ta' `book()`. Uża `payload.context.eventID` biex tiddistingwi bejn bookings:

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

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

Is-sejħa ta' `destroy()` twaqqafhom kollha – l-istanza tieqaf tisma' għal messaġġi mingħand il-checkout kompletament.

## Messaġġi minn sorsi oħra jiġu injorati

Il-client jaċċetta biss messaġġi mill-oriġini tal-checkout ta' Entase, għalhekk traffiku `postMessage` mhux relatat fuq il-paġna tiegħek qatt ma jasal għand il-callbacks tiegħek.
