From a1606819a1c0728d6a9eaadfa84773ffad9a6ca4 Mon Sep 17 00:00:00 2001 From: adrien Date: Sat, 17 Jan 2026 23:48:35 +0100 Subject: [PATCH] =?UTF-8?q?d=C3=A9lai=20c=C3=B4t=C3=A9=20php?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.php | 40 ++++++++++++++++++++++------------------ question.php | 21 ++++++++++++++++++++- 2 files changed, 42 insertions(+), 19 deletions(-) diff --git a/index.php b/index.php index 9d224f3..735e443 100644 --- a/index.php +++ b/index.php @@ -53,30 +53,34 @@ const citation = document.createElement('blockquote'); citation.innerText = formulaireData.get('question'); conversation.appendChild(citation); - formulaire.reset(); - const requete = await fetch(formulaire.action, { - method: formulaire.method, - body: formulaireData - }); const paragraphe = document.createElement('p'); paragraphe.setAttribute('aria-busy', 'true'); conversation.appendChild(paragraphe); - const reponse = await requete.text(); - paragraphe.setAttribute('aria-busy', 'false'); - Array.from(reponse).forEach((lettre, i) => { - setTimeout(() => { - if (lettre == "\n") paragraphe.innerHTML += "
"; - else paragraphe.innerHTML += lettre; - }, i * 40); + + const requete = await fetch(formulaire.action, { + method: formulaire.method, + body: formulaireData }); - setTimeout(() => { - conversation.innerHTML += "

😸 Voulez-vous que je réponde à une autre question ?

"; - conversation.scrollTop = conversation.scrollHeight; - bouton.disabled = false; - bouton.setAttribute("aria-busy", false); - }, reponse.length * 40); + paragraphe.setAttribute('aria-busy', 'false'); + + const reader = requete.body.getReader(); + const decoder = new TextDecoder("utf-8"); + + while (true) { + const { value, done } = await reader.read(); + if (done) break; + const lettre = decoder.decode(value, { stream: true }); + if (lettre == "\n") paragraphe.innerHTML += "
"; + else paragraphe.innerHTML += lettre; + await new Promise(r => setTimeout(r, 0)); // micro pause pour rendre l'UI responsive + } + + conversation.innerHTML += "

😸 Voulez-vous que je réponde à une autre question ?

"; + conversation.scrollTop = conversation.scrollHeight; + bouton.disabled = false; + bouton.setAttribute("aria-busy", false); }); diff --git a/question.php b/question.php index 3e8e956..6c468a9 100644 --- a/question.php +++ b/question.php @@ -1 +1,20 @@ - \ No newline at end of file +