import { useRouter } from "next/router";
import { useEffect, useState } from "react";
import { getAccessToken, getEmbeddedConnectedWallet, usePrivy, useWallets } from "@privy-io/react-auth";
import Head from "next/head";
import { useBalance } from 'wagmi';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import {faDiscord, faGoogle, faMeta, faTwitter, faXTwitter } from "@fortawesome/free-brands-svg-icons";
import {faAdd, faFileExport, faLink, faTrash, faUnlink, faWallet } from "@fortawesome/free-solid-svg-icons";
import { useSetActiveWallet } from "@privy-io/wagmi";
async function verifyToken() {
const url = "/api/verify";
const accessToken = await getAccessToken();
const result = await fetch(url, {
headers: {
...(accessToken ? { Authorization: `Bearer ${accessToken}` } : undefined),
},
});
return await result.json();
}
export default function DashboardPage() {
const [verifyResult, setVerifyResult] = useState(0);
const [username, setUsername] = useState('');
const [vaultData, setVaultData] = useState({ prehp: "0", vc: "0" });
const router = useRouter();
const { ready, authenticated, user, logout,exportWallet, linkWallet,unlinkWallet, linkDiscord, unlinkDiscord, linkTwitter, unlinkTwitter,linkGoogle, unlinkGoogle } = usePrivy();
const { wallets } = useWallets();
const { data: balanceData } = useBalance({
address: user?.wallet?.address as `0x${string}`,
});
const balance = balanceData?.formatted;
const token = balanceData?.symbol;
useEffect(() => {
if (ready && !authenticated) {
router.push("/");
}
if(ready){
if(username == "-1"){
console.log(user?.id);
router.push("/logincomplete");
}
}
}, [ready, authenticated, router, username]);
useEffect(() => {
async function fetchUsername() {
if (ready) {
try {
const response = await fetch(`https://vps.playpoolstudios.com/metahunt/api/launcher/get_display_name_public.php?id=${user?.id}`);
const data = await response.text();
setUsername(data); // Assuming the response contains the display name under `display_name`
} catch (error) {
console.error("Error fetching username:", error);
}
}
}
async function fetchVaultData() {
if (user?.id) {
try {
const response = await fetch(`http://vps.playpoolstudios.com/metahunt/api/launcher/get_vault.php?id=${user?.id}`);
const data = await response.json();
setVaultData({ prehp: data.prehp, vc: data.vc });
} catch (error) {
console.error("Error fetching vault data:", error);
}
}
}
fetchUsername();
fetchVaultData();
}, [ready]);
const numAccounts = user?.linkedAccounts?.length || 0;
const canRemoveAccount = numAccounts > 1;
const email = user?.email;
const phone = user?.phone;
const wallet = user?.wallet;
const googleSubject = user?.google?.subject || null;
const twitterSubject = user?.twitter?.subject || null;
const discordSubject = user?.discord?.subject || null;
function ToggleDiscord(){
if(user?.discord){
unlinkDiscord(user?.discord.subject);
}else{
linkDiscord();
}
}
function ToggleTwitter(){
if(user?.twitter){
unlinkTwitter(user?.twitter.subject);
}else{
linkTwitter();
}
}
function ToggleGoogle(){
if(user?.google){
unlinkGoogle(user?.google.subject);
}else{
linkGoogle();
}
}
return (
<>
W3B Games Dashboard
{ready && authenticated ? (
<>
Welcome {username || "User"},
Vault Credits
{vaultData.vc || "0"} VC
{/*
{user?.wallet?.address}
{balance || 0} {token}
*/}
Pre-hunt Points
{vaultData.prehp || "0"} PHP
Socials
Twitter
{user?.twitter ? "@"+user?.twitter.username : "-"}
Discord
{user?.discord ? "@"+user?.discord?.username : "-"}
Google
{user?.google ? "@"+user?.google?.email : "-"}
Wallets
W3B Wallet
{getEmbeddedConnectedWallet(wallets)?.address }
{/*
*/}
{
wallets.map((wallet)=>{
if(wallet.connectorType == "embedded"){return "";}
return (
{wallet.walletClientType}
{wallet.address}
{ wallet.linked ?
:
}
);
})
}
{/*
{discordSubject ? (
) : (
)}
{wallet ? (
) : (
)}
*/}
>
) : null}
>
);
}