10 ?ids=${ids}&vs_currencies=aud&include_24hr_change=true
11 &x_cg_demo_api_key=${key}`.replace(/\s+/g, "");
12 const json = await fetch(url).then(r => r.json());
13
14 await set("prices_cache", JSON.stringify({ ts: Date.now(), data: json }));
15 console.log("Fetched & cached prices at", new Date());
16}
17
9 const ids = list.join("%2C");
10 const api = `https://api.coingecko.com/api/v3/simple/price?ids=${ids}&vs_currencies=aud&include_24hr_change=true`;
11 const data = await fetch(api).then(r => r.json());
12
13 // Tiny HTML snippet – links our CSS & JS vals
8 const [error, setError] = useState(null);
9
10 const fetchData = async () => {
11 try {
12 const userEndpoint = new URL(USER_ENDPOINT, window.location.origin);
13
14 const res = await fetch(userEndpoint);
15 const data = await res.json();
16 if (!res.ok) {
33
34 useEffect(() => {
35 fetchData();
36 }, []);
37
38 return { data, loading, error, refetch: fetchData };
39}
40
9 const [error, setError] = useState(null);
10
11 const fetchData = async () => {
12 try {
13 const projectEndpoint = new URL(PROJECT_ENDPOINT, window.location.origin);
17 if (branchId) filesEndpoint.searchParams.append("branchId", branchId);
18
19 const { project } = await fetch(projectEndpoint).then((res) =>
20 res.json()
21 );
22 const { files } = await fetch(filesEndpoint).then((res) => res.json());
23
24 setData({ project, files });
34 useEffect(() => {
35 if (!projectId) return;
36 fetchData();
37 }, [projectId, branchId]);
38
39 return { data, loading, error, refetch: fetchData };
40}
41
8 const [error, setError] = useState(null);
9
10 const fetchData = async () => {
11 try {
12 const res = await fetch(ENDPOINT);
13 const data = await res.json();
14 if (!res.ok) {
32
33 useEffect(() => {
34 fetchData();
35 }, []);
36
37 return { data, loading, error, refetch: fetchData };
38}
39
6 const [loading, setLoading] = useState(true);
7
8 const fetchBalance = async () => {
9 try {
10 const response = await fetch("/api/credit-balance");
11 if (response.ok) {
12 const data = await response.json();
13 setBalance(data.balance);
14 } else {
15 console.error("Failed to fetch balance");
16 }
17 } catch (err) {
18 console.error("Error fetching balance:", err);
19 } finally {
20 setLoading(false);
23
24 useEffect(() => {
25 fetchBalance();
26 }, []);
27
28 return { balance, loading, refetch: fetchBalance };
29}
19 setError(null);
20 try {
21 const res = await fetch(ENDPOINT, {
22 method: "POST",
23 headers: {
12 setData(null);
13 setError(null);
14 const res = await fetch(ENDPOINT, {
15 method: "POST",
16 body: JSON.stringify({
7 const [loading, setLoading] = useState(true);
8
9 const fetchData = async () => {
10 const endpoint = new URL(ENDPOINT, window.location.origin);
11 endpoint.searchParams.append("projectId", projectId);
12
13 const res = await fetch(endpoint)
14 .then(res => res.json());
15 setData(res.branches);
19 useEffect(() => {
20 if (!projectId) return;
21 fetchData();
22 }, [projectId]);
23
24 return { data, loading, refetch: fetchData };
25}
87 return {
88 type: "error",
89 message: `Error fetching traces: ${e.message}`,
90 };
91 }