"use client"; import React, { useState, useEffect } from "react"; import { SunIcon, MoonIcon } from "@heroicons/react/solid"; import { PrivyProvider, usePrivy } from "@privy-io/react-auth"; import { FaTwitter, FaWallet } from "react-icons/fa"; import { CheckIcon } from "@heroicons/react/outline"; // For the check mark icon // Helper functions to generate pseudo data const generateRandomName = () => { const names = ["Alice", "Bob", "Charlie", "David", "Eva", "Frank", "Grace", "Hannah", "Ivan", "Judy"]; return names[Math.floor(Math.random() * names.length)]; }; const generateRandomCoin = () => { const coins = ["Bitcoin", "Ethereum", "Litecoin", "Ripple", "Cardano", "Polkadot", "Solana", "Chainlink"]; return coins[Math.floor(Math.random() * coins.length)]; }; const generateRandomPoint = () => { return Math.floor(Math.random() * (100 - 10 + 1)) + 10; }; // Generate pseudo data for rows const generateTableData = (rows) => { const data = []; for (let i = 0; i < rows; i++) { data.push({ name: generateRandomName(), coin: generateRandomCoin(), point: generateRandomPoint(), }); } return data; }; const tableData = generateTableData(10); function Home() { const { login, user, ready, logout, linkTwitter, unlinkTwitter } = usePrivy(); const [darkMode, setDarkMode] = useState(true); const [twitterConnected, setTwitterConnected] = useState(false); // State to track Twitter connection const [walletConnected, setWalletConnected] = useState(false); // State to track Wallet connection const [incrementNumber, setIncrementNumber] = useState(1); const[leaderboardData, setLeaderboardData] = useState([]); useEffect(() => { if (darkMode) { document.documentElement.classList.add("dark"); } else { document.documentElement.classList.remove("dark"); } }, [darkMode]); useEffect(() => { const intervalId = setInterval(async () => { setIncrementNumber((prevNumber) => prevNumber + 1); const response = await fetch('https://vps.playpoolstudios.com/callfi/get_leaderboard.php'); if (!response.ok) { throw new Error('Network response was not ok'); } const data = await response.json(); console.log('Leaderboard data:', data); setLeaderboardData(data); }, 5000); return () => clearInterval(intervalId); // Clean up the interval on component unmount }, []); const toggleDarkMode = () => { setDarkMode(!darkMode); document.documentElement.classList.toggle("dark", !darkMode); }; const postLoginAPI = async (usertag) => { try { const response = await fetch('https://vps.playpoolstudios.com/callfi/register_twitter_user.php?tag=' + usertag); if (!response.ok) { throw new Error('Network response was not ok'); } const data = await response.json(); console.log('API call successful:', data); setTwitterConnected(true); // Set Twitter connection state to true on successful API call } catch (error) { console.error('Error during API call:', error); } }; useEffect(() => { if (ready && user) { const username = user.twitter?.username ? `@${user.twitter.username}` : '@unknownUser'; if (username !== "@unknownUser") { postLoginAPI(username); } // Assume we have a way to check if the wallet is connected const walletStatus = user.wallet; // This is an assumption; replace it with actual wallet connection check if (walletStatus) { setWalletConnected(true); } } }, [ready, user]); return (

CallFi

{!ready ? (

Loading...

) : user ? ( ) : ( )}

Leaderboard

{leaderboardData.map((item, index) => ( ))}
Name Points
{item.username} {item.points}
); } export default function App() { return ( ); }