From 6f4330b0a2f8946d54defc3b28ff0cdd30bd47f5 Mon Sep 17 00:00:00 2001 From: marvinkrausser Date: Sat, 16 May 2026 00:17:17 +0200 Subject: [PATCH] added sending confirmation --- website/src/Reviews.css | 38 +++++++++++++++++++++++++++++++++++ website/src/Reviews.jsx | 44 ++++++++++++++++++++++++++++++----------- 2 files changed, 70 insertions(+), 12 deletions(-) diff --git a/website/src/Reviews.css b/website/src/Reviews.css index fcc202d..e455316 100644 --- a/website/src/Reviews.css +++ b/website/src/Reviews.css @@ -208,4 +208,42 @@ .review-text::placeholder { color: white; +} + +.loader-box{ + height: 55px; + width: 86px; + margin-top: 30px; + justify-self: center; + display: flex; + align-items: center; + justify-content: center; +} + +/* HTML:
*/ +.loader2 { + display: inline-flex; + gap: 5px; + animation: l3-0 1s infinite; + transform-origin: 50% calc(100% + 2.5px); +} +.loader2:before, +.loader2:after { + content: ""; + width: 25px; + aspect-ratio: 1; + box-shadow: 0 0 0 3px inset #fff; +} +.loader2:after { + transform-origin: -2.5px calc(100% + 2.5px); + animation: l3-1 1s infinite; +} +@keyframes l3-1 { + 50%, + 100% {transform:rotate(180deg)} +} +@keyframes l3-0 { + 0%, + 50% {transform:rotate(0deg)} + 100% {transform:rotate(90deg)} } \ No newline at end of file diff --git a/website/src/Reviews.jsx b/website/src/Reviews.jsx index 9fbbfdb..b2641ef 100644 --- a/website/src/Reviews.jsx +++ b/website/src/Reviews.jsx @@ -11,6 +11,8 @@ function Reviews() { const [selectedWebsite, setSelectedWebsite] = useState("Not Specified"); const [selectedRating, setSelectedRating] = useState(1); const [text, setText] = useState(""); + const [loading, setLoading] = useState(false); + const [sendSuccess, setSendSuccess] = useState(false); const MAX_TEXT = 900; @@ -46,23 +48,35 @@ function Reviews() { console.log(JSON.stringify(review)); - const response = await fetch(`${apiUrl}/review`, { - method: "POST", - body: JSON.stringify(review), - headers: { - "Content-Type": "application/json" + setLoading(true); + setError(false); + setSendSuccess(false); + + try { + const response = await fetch(`${apiUrl}/review`, { + method: "POST", + body: JSON.stringify(review), + headers: { + "Content-Type": "application/json" + } + }); + + if (!response.ok) { + setError(true); + return; + } + else { + setError(false); } - }); - if (!response.ok) { + setSendSuccess(true); + const result = await response.json(); + } catch (e) { setError(true); - return; } - else { - setError(false); + finally { + setLoading(false); } - - const result = await response.json(); } const changeSelectedWebsite = (website) => { @@ -127,6 +141,12 @@ function Reviews() { + +
+ {loading &&
} + {sendSuccess &&

Review sent

} + {error &&

Error

} +