Exercice : Charger les e-mails d’un utilisateur par lots
Dans cet exercice, vous allez étendre l’application pour pouvoir charger les e-mails d’un utilisateur en lots de 10 éléments.
Charger des e-mails en lots de 10 éléments
Commencez par mettre à jour la fonction getEmails()
pour charger des e-mails en lots de 10 éléments. Si le jeu d’e-mails à charger a été défini, il est passé comme argument de la fonction.
Dans votre éditeur de code. ouvrez le fichier graph.js.
Mettez à jour
getEmails()
la signature de la fonction pour accepter un seul argumentnextLink
:async function getEmails(nextLink) { // ... }
Si la valeur
nextLink
a été définie, la fonction doit la transmettre au SDK pour récupérer les données. Si la valeurnextLink
n’a pas été définie, la fonction doit charger le jeu de données initial. Mettez à jourgetEmails()
la fonction en remplaçant l’instructionreturn
par l’instructionif
suivante :if (nextLink) { return await graphClient .api(nextLink) .get(); } else { return await graphClient .api('/me/messages') .select('subject,receivedDateTime') .orderby('receivedDateTime desc') .top(10) .get(); }
La fonction
getEmails()
mise à jour doit ressembler à ce qui suit :async function getEmails(nextLink) { ensureScope('mail.read'); if (nextLink) { return await graphClient .api(nextLink) .get(); } else { return await graphClient .api('/me/messages') .select('subject,receivedDateTime') .orderby('receivedDateTime desc') .top(10) .get(); } }
Étendre le modèle pour permettre aux utilisateurs de charger des plus d’e-mails
Vous avez étendu la fonction getEmails()
pour charger davantage d’e-mails. L’étape suivante consiste à afficher un bouton qui permet aux utilisateurs de charger plus d’e-mails s’ils sont disponibles.
Dans votre éditeur de code, ouvrez le fichier index.html.
Recherchez la ligne
<ul id="emails"></ul>
et ajoutez le code suivant immédiatement après celle-ci pour ajouter un bouton qui permet aux utilisateurs de charger plus d’e-mails.<div id="loadMoreContainer" style="display: none;"> <button onclick="displayEmail();">Load more</button> </div>
Charger plus d’e-mails
L’application ayant été mise à jour pour permettre aux utilisateurs de charger plus d’e-mails, la dernière étape consiste à ajouter des fonctionnalités pour gérer le changement de plus d’e-mails.
Dans votre éditeur de code, ouvrez le fichier ui.js.
Avant la fonction
displayEmail()
, définissez une nouvelle variable nomméenextLink
sans y assigner une valeur :var nextLink;
Dans la fonction
displayEmail()
, mettez à jour l’appel pour obtenir la fonctiongetEmails()
afin d’inclure la valeurnextLink
.var emails = await getEmails(nextLink);
Ensuite, après avoir récupéré les données, obtenez la valeur de la propriété
@odata.nextLink
. Si elle est définie, elle indique qu’il y a plus de données disponibles pour les utilisateurs à afficher. Ajoutez le code suivant immédiatement après l’instructionif
dans la fonctiondisplayEmail()
:nextLink = emails['@odata.nextLink'];
À la fin de la fonction
displayEmail()
, après avoir affiché les e-mails récupérés, faites défiler jusqu’à la fin de la page afin que l’utilisateur puisse voir immédiatement les e-mails récupérés.window.scrollTo({ top: emailsUl.scrollHeight, behavior: 'smooth' });
Enfin, vérifiez si la valeur
nextLink
a été retournée, et le cas échéant, affichez le bouton pour charger davantage d’e-mails.Ajoutez le code suivant à la fin de la fonction
displayEmail()
:if (nextLink) { document.getElementById('loadMoreContainer').style = 'display: block'; }
La fonction
displayEmail()
complète doit ressembler à ce qui suit :var nextLink; async function displayEmail() { var emails = await getEmails(nextLink); if (!emails || emails.value.length < 1) { return; } nextLink = emails['@odata.nextLink']; document.getElementById('displayEmail').style = 'display: none'; var emailsUl = document.getElementById('emails'); emails.value.forEach(email => { var emailLi = document.createElement('li'); emailLi.innerText = `${email.subject} (${new Date(email.receivedDateTime).toLocaleString()})`; emailsUl.appendChild(emailLi); }); window.scrollTo({ top: emailsUl.scrollHeight, behavior: 'smooth' }); if (nextLink) { document.getElementById('loadMoreContainer').style = 'display: block'; } }
Exécuter votre application
Vous avez étendu votre application pour afficher les e-mails d’un utilisateur en utilisant Microsoft Graph par lots de 10 éléments et lui permettre de charger davantage d’e-mails. Exécuter l’application localement.
Affichez un aperçu de l’application web en exécutant la commande suivante dans le terminal.
npm start
Votre navigateur doit pointer vers
http://localhost:8080
.Sélectionnez Se connecter avec Microsoft pour vous connecter avec votre compte Microsoft 365.
Après vous être connecté avec votre compte, sélectionnez le bouton Afficher l’e-mail.
Une liste des 10 derniers e-mails de l’utilisateur doit s’afficher dans l’application.
Si votre boîte aux lettres contient plus de 10 e-mails, un bouton permettant de charger les 10 e-mails suivants s’affiche.
Arrêtez le serveur Node.js en sélectionnant CTRL+C dans la fenêtre du terminal.