"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"; // 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; }; function Home() { const { login, user, ready, logout, linkTwitter, unlinkTwitter, linkWallet, unlinkWallet } = 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([]); const [isJoined, setIsJoined] = useState(false); 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 ( // ${darkMode ? "bg-black text-white" : "bg-white text-black"}

CallFi

{ready && user ? (
) : !ready ? (

Loading...

) : ( )}
{/* Note card */} { ready && user?.twitter &&(

Join the Leaderboard

Get on the leaderboard by posting a tweet!

) } { ready && !user?.twitter && (

Join the Leaderboard

Start by linking your Twitter account!

{user ? ( ) : ( )}
) } {/* Leaderboard */}
{leaderboardData.map((item) => (
= 0 ? 'positive' : 'negative'} mx-auto mb-4`}>

{item["username"]}

{parseFloat(item["points"]).toFixed(2)}x

))}
); } export default function App() { return ( ); }