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
nextLinka été définie, la fonction doit la transmettre au SDK pour récupérer les données. Si la valeurnextLinkn’a pas été définie, la fonction doit charger le jeu de données initial. Mettez à jourgetEmails()la fonction en remplaçant l’instructionreturnpar l’instructionifsuivante :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éenextLinksans 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’instructionifdans 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
nextLinka é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 startVotre 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.