Un flash peut en ouvrir un autre, lui passer des paramètres et recevoir une valeur en retour : un flash de paiement, de signature ou de choix d’adresse se réutilise ainsi partout.
Appeler
const result = await flash.call('acme.paiement', { montant: 18450, reference: 'F-2026-09' });
if (result.hasValue) {
flash.ui.toast(`Paiement ${result.value.statut}`);
}
Pendant l’appel, le flash appelant est suspendu. Le résultat indique si l’appelé a renvoyé une
valeur : hasValue est faux si l’utilisateur a quitté avec le bouton retour.
Être appelé
L’appelé lit ses paramètres dans ctx.params et renvoie sa valeur depuis
flash.main, ou à tout moment avec flash.exit(valeur).
flash.main(async (ctx) => {
const { montant, reference } = ctx.params;
// … afficher, faire payer …
return { statut: 'accepté', reference };
});
Erreurs
Si l’appelé échoue, l’appelant reçoit une FlashCallError. Traitez-la :
une erreur d’appel non traitée arrête toute la pile de flashs et ramène l’utilisateur à l’accueil.
try {
const result = await flash.call('acme.paiement', { montant: 18450 });
} catch (error) {
if (error instanceof flash.errors.FlashCallError) {
flash.ui.toast('Le paiement n’a pas pu aboutir', { level: 'error' });
} else {
throw error;
}
}
Limites
- Au plus 8 flashs ouverts les uns au-dessus des autres.
- Un flash déjà ouvert dans la pile ne peut pas être rappelé (pas de boucle).
- Paramètres et valeur de retour sont des données JSON.