MCPcopy Create free account
hub / github.com/Bitbox-Connect/Bitbox / Footer

Function Footer

client/src/component/Footer.jsx:9–247  ·  view source on GitHub ↗
(props)

Source from the content-addressed store, hash-verified

7import VisitorCounter from './Footers/VisitorCount';
8
9const Footer = (props) => {
10 const VITE_SERVER_PORT = import.meta.env.VITE_SERVER_PORT || "https://bitbox-uxbo.onrender.com";
11
12 const [email, setEmail] = useState("");
13 const [name, setName] = useState("");
14 const [message, setMessage] = useState("");
15 const [isError, setIsError] = useState(false); // Flag to handle message color
16 const [stars, setStars] = useState(0);
17
18 const handleSubscribe = async (e) => {
19 e.preventDefault();
20 setMessage(""); // Reset message
21
22 if (!email || !name) {
23 setIsError(true);
24 setMessage("Please enter valid details.");
25 clearMessageAndResetEmail();
26 return;
27 }
28
29 try {
30 const response = await fetch(`${VITE_SERVER_PORT}/api/profile/subscribe`, {
31 method: "POST",
32 headers: {
33 "Content-Type": "application/json",
34 },
35 body: JSON.stringify({ name, email }),
36 });
37
38 const data = await response.json();
39
40 if (response.ok) {
41 setIsError(false);
42 setEmail('');
43 setName('')
44 setMessage("Thank you for subscribing!");
45 } else {
46 setIsError(true);
47 setMessage(data.message || "Subscription failed, please try again.");
48 }
49
50 clearMessageAndResetEmail();
51 } catch (error) {
52 console.error("Error subscribing:", error);
53 setIsError(true);
54 setMessage("An error occurred, please try again later.");
55 clearMessageAndResetEmail();
56 }
57 };
58
59 const clearMessageAndResetEmail = () => {
60 setTimeout(() => {
61 setMessage("");
62 setEmail("");
63 setName("")
64 }, 7000);
65 };
66 useEffect(() => {

Callers

nothing calls this directly

Calls 1

fetchGitHubStarsFunction · 0.85

Tested by

no test coverage detected