"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); useEffect(() => { if (darkMode) { document.documentElement.classList.add("dark"); } else { document.documentElement.classList.remove("dark"); } }, [darkMode]); useEffect(() => { const intervalId = setInterval(() => { setIncrementNumber((prevNumber) => prevNumber + 1); }, 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 {darkMode ? : } {twitterConnected && ( )} {walletConnected && ( )} {!ready ? ( Loading... ) : user ? ( Logout ) : ( Login )} Leaderboard Name Coin Points {tableData.map((row, index) => ( {row.name} {row.coin} {row.point} ))} ); } export default function App() { return ( ); }
Loading...