Afficher un message à l'écran après l'envoie d'une alerte

Bonjour,

Je voudrais afficher un message à l’écran après l’exécution d’une alerte qui envoie un mail.
Voici comment j’essaie de procéder mais sans succès :

	@Override
	public String postAlert(Alert alert) {
	    if (!isBatchInstance() && "0".equals(getGrant().getParameter("PAUSE_MODE"))) {
	    	
		    List<String> toRecipients = alert.getRecipentTO();
		    List<String> ccRecipients = alert.getRecipentCC();
		
		    String recipientsMessage = "To: " + String.join(", ", toRecipients) + "\n" + "CC: " + String.join(", ", ccRecipients);
			AppLog.info("AEK postAlert Recipients of the alert : "+ recipientsMessage, getGrant());
		    return Message.formatInfo("Recipients of the alert", recipientsMessage, null);
	    }
		return super.postAlert(alert);
	}

Pourriez-vous me dire si cela est faisable et si oui de quel façon cela peut se faire ?
Merci d’avance
Abed.

[Platform]
Status=OK
Version=6.1.14
BuiltOn=2024-11-13 12:35
Git=6.1/34709826975d46845d2c518ac5815bd118d09709
Encoding=UTF-8
EndpointIP=10.42.43.120
EndpointURL=http://deploy-crossborder-dev-84fdbb688b-p4pxc:8080
TimeZone=UTC
SystemDate=2024-11-20 11:30:29

Bonjour Abed,

Après vérification :

  • le hook preAlert peut retourner une erreur pour bloquer l’envoi / visible dans les logs
  • le retour du postAlert n’est pas envoyé en front ni tracé en log

Tu peux essayer de passer par le tuyau du contexte web dont on se sert par exemple lors d’un initUpdate pour afficher un message à l’ouverture du formulaire :

String msg = Message.formatInfo("Recipients of the alert", recipientsMessage, null);
getContext().addMessage(this, msg, getGrant());

Il remontera peut être au front ?

Merci @Francois ,

J’ai ajouté le message dans le contexte mais ça n’a rien affiché, y aurait il une autre piste ?

@Override
public String postAlert(Alert alert) {
	if (!isBatchInstance() && "0".equals(getGrant().getParameter("PAUSE_MODE"))) {
		
		// Collect recipient information
		List<String> toRecipients = alert.getRecipentTO();
		List<String> ccRecipients = alert.getRecipentCC();
		
		String recipientsMessage = "To: " + String.join(", ", toRecipients) + "\n" + "CC: " + String.join(", ", ccRecipients);
		AppLog.info("AEK postAlert - Recipients of the alert: " + recipientsMessage, getGrant());
		
		// Display the message in the front-end
		String msg = Message.formatInfo("Recipients of the alert", recipientsMessage, null);
		getContext().addMessage(this, msg, getGrant());
	}
	return super.postAlert(alert); // Call the parent implementation
}
```

Ok l’alerte ne doit pas se lancer depuis un init.
En soit, il faudrait faire évoluer Simplicité pour remonter le message des hooks au front.

Sinon il faut faire remonter l’information via celui qui lance l’alerte.
Dans un postSave par exemple :

public String postAlert(Alert alert) {
   // ...
   setParameter("myPostAlertMsg", msg);
   // ...
}
public String postSave() {
   // ...
   alert.send(this);
   String msg = removeParameter("myPostAlertMsg");
   if (msg!=null) return msg;
   // ...
}

[EDIT]
A minima on va faire une évolution pour retourner le message à la méthode Alert.send pour que ce soit plus simple en back à faire circuler (5.3.56+ et 6.1.15+) :

public String postSave() {
   // ...
   String msg = alert.send(this);
   if (msg!=null) return msg;
   // ...
}