From adabaf1f3fd6beeb7b292504dda75f66036f83e7 Mon Sep 17 00:00:00 2001 From: MuslemRahimi Date: Sun, 13 Apr 2025 14:41:18 +0200 Subject: [PATCH] ui fix --- src/routes/watchlist/stocks/+page.svelte | 48 +++++++++++++++--------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/src/routes/watchlist/stocks/+page.svelte b/src/routes/watchlist/stocks/+page.svelte index 93b5419f..dc5d9df9 100644 --- a/src/routes/watchlist/stocks/+page.svelte +++ b/src/routes/watchlist/stocks/+page.svelte @@ -1079,24 +1079,38 @@ } if (data?.user?.credits > totalCreditCost && tickers?.length > 0) { - data.user.credits = data?.user?.credits - totalCreditCost; - const response = await fetch("/api/bulk-download", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ tickers: tickers, bulkData: bulkData }), - }); + toast.promise( + (async () => { + data.user.credits = data.user.credits - totalCreditCost; - if (response.ok) { - const blob = await response.blob(); - const url = URL.createObjectURL(blob); - const a = document.createElement("a"); - a.href = url; - a.download = "historical_data.zip"; - document.body.appendChild(a); - a.click(); - a.remove(); - URL.revokeObjectURL(url); - } + const response = await fetch("/api/bulk-download", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ tickers: tickers, bulkData: bulkData }), + }); + + if (!response.ok) { + throw new Error("Download request failed"); + } + + const blob = await response.blob(); + const url = URL.createObjectURL(blob); + + const a = document.createElement("a"); + a.href = url; + a.download = "historical_data.zip"; + document.body.appendChild(a); + a.click(); + a.remove(); + URL.revokeObjectURL(url); + })(), + { + loading: "Downloading data...", + success: "Download complete!", + error: "Download failed. Try again.", + style: `border-radius: 5px; background: #fff; color: #000; border-color: ${$mode === "light" ? "#F9FAFB" : "#4B5563"}; font-size: 15px;`, + }, + ); } else if (tickers?.length === 0) { toast.error("Add tickers first to your watchlist", { style: `border-radius: 5px; background: #fff; color: #000; border-color: ${$mode === "light" ? "#F9FAFB" : "#4B5563"}; font-size: 15px;`,