Open Vexcited opened 4 months ago
Dans mes recherches, j'ai obtenue la réponse si dessous avec une notification de "Communication" :
{
"nom": "CentraleNotifications",
"session": 9587159,
"numeroOrdre": "EB6CD6F215D6638D1E298FFECB666021",
"donneesSec": {
"donnees": {
"liste": {
"_T": 24,
"V": [
{
"L": "Communication",
"ident": "secMessagerie",
"liste": {
"_T": 24,
"V": [
{
"type": 2,
"action": 2,
"id": "Informations",
"titre": {
"_T": 21,
"V": ""
},
"message": {
"_T": 21,
"V": "Informations et sondages"
},
"compteur": 1,
"modalites": {
"_T": 26,
"V": "[0]"
}
}
]
}
}
]
},
"nbNotifs": 1
},
"nom": "CentraleNotifications"
}
}
On y trouve dedans :
"type": 2,
"action": 2,
Avec ces données par exemple, j'en déduis que le navigateur, adapte donc le type de notification à afficher grâce au javascript des enums trouvé par Vexcited, donc dans notre cas, c'est pour le type :
TypeNotification[TypeNotification["nCompteur"] = 2] = "nCompteur";
Cette ligne permettra au navigateur de savoir qu'il aura a chercher un chiffre pour afficher un compteur de notifications, car pour les news, les notifications se "stackent", donc dans la réponse, on trouve aussi donc :
"compteur": 1,
Le navigateur, sachant qu'il devra donc afficher un chiffre, le récupère ici, et l'affiche tel quel (je ne sais pas a ce niveau si le javascript builder agit afin de l'afficher car il ne contient pour l'instant que les instructions pour gérer les actions dont on va parler plus bas) :
Ensuite, le navigateur devra pouvoir proposer une action à l'utilisateur, il commencera avec la réponse à savoir quel action il devra afficher, qui est dans notre cas :
"action": 2,
Maintenant que le navigateur sais a quel type d'action il à affaire, il va attribuer une propriété, qui est abn[ACTION], grâce au javascript enums, dont la ligne est dans notre cas :
TypeActionBoutonNotif[TypeActionBoutonNotif["abnLien"] = 2] = "abnLien";
Puis à ce stade, le builder va donc s'occuper de modifier l'html pour afficher l'action approprié, qui dans notre cas se fait avec la propriété "abnLien", donc :
case TypeCentraleNotifications_1.TypeActionBoutonNotif.abnLien:
lBoutonCoin = '<i class="sc_btnCoin icon_affichage_widget"></i>';
lAvecActionArticle = true;
break;
Il va donc s'occuper d'afficher dans le HTML le bouton correspondant sur la notification, qui est dans notre cas une "redirection" :
Maintenant, si on s'attaque au cas de la réponse de Vexcited, qui présente une notification de sécurité, on obtient dans la réponse :
"type": 1,
"action": 0,
Et si on reproduit les mêmes actions que dessus, on tombe donc sur le javascript des enums pour le type :
TypeNotification[TypeNotification["nUnique"] = 1] = "nUnique";
Qui est une notification unique et donc pas "stackable" comme la précédente, et donc evidémment ne possède pas de compteur dans la réponse, puis si on se penche du coté action, on tombe dans le javascript des enums sur :
TypeActionBoutonNotif[TypeActionBoutonNotif["abnLu"] = 0] = "abnLu";
Qui est donc l'action lire, que le javascript builder, grâce à la propriété "abnLu", doit executer :
case TypeCentraleNotifications_1.TypeActionBoutonNotif.abnLu:
if (!aAfficherHistorique) {
lBoutonCoin = ['<ie-btnimage class="sc_btnCoin btnImageIcon icon_eye_close"', ' title="', ObjetTraduction_1.GTraductions.getValeur('CentraleNotifications.MarquerLu'), '"', ObjetHtml_1.GHtml.composeAttr('ie-model', 'btnNotifCoin', [aIndexSection, aIndexNotif]), '></ie-btnimage>'].join('');
}
break;
Le navigateur sait donc qu'il doit placer le bouton lire et donne :
Create a handler in the client to access data from this menu.
Related PR on pronotepy : https://github.com/bain3/pronotepy/pull/288
request
response data
javascript builder
enums