From f36d4391d846d6e81bad56fccb125a83e6201efa Mon Sep 17 00:00:00 2001
From: David Smadja <david.smadja@assemblee-nationale.fr>
Date: Fri, 31 Jan 2025 15:44:09 +0100
Subject: [PATCH] Add wait indicator when download button is clicked

---
 src/routes/+page.svelte | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 09d8ec5e1..501f35bee 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -244,6 +244,8 @@
   let variablesHistory: string[] = $state([])
   let windowInnerWidth: number | undefined = $state(undefined)
 
+  let saveButtonClicked: boolean = $state(false)
+
   function auditSimulationQuery(
     audit: Audit,
     query: URLSearchParams,
@@ -1247,10 +1249,21 @@
             {#if (displayMode.parametersVariableName !== undefined || displayMode.testCasesIndex.length > 0) && (mobileLawTab || !displayMode.budget) && displayMode.edit === undefined}
               <button
                 class="absolute -bottom-4 right-2 z-30 flex items-center gap-2 rounded border border-le-bleu bg-white px-5 py-2 text-sm font-bold uppercase tracking-[0.085em] text-le-bleu shadow-lg transition-all duration-200 ease-out-back hover:bg-gray-100 active:bg-gray-200 disabled:scale-90 disabled:opacity-0 lg:right-5 xl:right-10"
-                onclick={shareTestCaseSimulationLink}
+                onclick={async () => {
+                  if (saveButtonClicked) {
+                    return
+                  }
+                  saveButtonClicked = true
+                  await shareTestCaseSimulationLink()
+                  saveButtonClicked = false
+                }}
                 id="situation_savebutton"
               >
-                <span class="hidden lg:inline">Enregistrer / partager</span>
+                <span class="hidden lg:inline"
+                  >{saveButtonClicked
+                    ? "Génération en cours..."
+                    : "Enregistrer / partager"}</span
+                >
                 <iconify-icon class="text-lg" icon="ri:share-fill"
                 ></iconify-icon>
               </button>
-- 
GitLab