import { useState, useEffect, useRef, useContext, ChangeEvent } from "react"; import ReactGA from "react-ga4"; import { AvatarCircle, CaretDownIcon, DropdownContainer, GameSelectDropdown, GameSelectDropdownMenu, GameSelectDropdownMenuItem, HeaderNav, HeaderText, HomeIcon, LogoColumn, NameRow, QortalLogoIcon, RightColumn, Username, } from "./Header-styles"; import gameContext from "../../contexts/gameContext"; import { UserContext } from "../../contexts/userContext"; import { cropAddress } from "../../utils/cropAddress"; import { BubbleCardColored1 } from "../../pages/Home/Home-Styles"; import logoSVG from "../../assets/SVG/LOGO.svg"; import { Alert, Avatar, Box, Button, FormControlLabel, MenuItem, Select, Snackbar, SnackbarCloseReason, Switch, styled, } from "@mui/material"; import { sendRequestToExtension } from "../../App"; import { Terms } from "../Terms"; const checkIfLocal = async () => { try { const response = await sendRequestToExtension("CHECK_IF_LOCAL"); if (!response.error) { return response; } } catch (error) { return false; } }; export const Label = styled("label")( ({ theme }) => ` font-family: 'IBM Plex Sans', sans-serif; font-size: 14px; display: block; margin-bottom: 4px; font-weight: 400; ` ); export const Header = ({ qortBalance, ltcBalance, mode, setMode }: any) => { const [openDropdown, setOpenDropdown] = useState(false); const dropdownRef = useRef(null); const buttonRef = useRef(null); const [checked, setChecked] = useState(false); const [open, setOpen] = useState(false); const [info, setInfo] = useState(null); const { isUsingGateway } = useContext(gameContext); const [selectedCoin, setSelectedCoin] = useState("LITECOIN"); const handleChange = (event: ChangeEvent) => { setChecked(false); setOpen(true); setInfo({ type: "error", message: "Change the node you are using at the authentication page", }); }; const { userInfo } = useContext(gameContext); const { avatar, setAvatar } = useContext(UserContext); const LocalNodeSwitch = styled(Switch)(({ theme }) => ({ padding: 8, "& .MuiSwitch-track": { borderRadius: 22 / 2, "&::before, &::after": { content: '""', position: "absolute", top: "50%", transform: "translateY(-50%)", width: 16, height: 16, }, "&::before": { backgroundImage: `url('data:image/svg+xml;utf8,')`, left: 12, }, "&::after": { backgroundImage: `url('data:image/svg+xml;utf8,')`, right: 12, }, }, "& .MuiSwitch-thumb": { boxShadow: "none", width: 16, height: 16, margin: 2, }, })); const handleClose = ( event?: React.SyntheticEvent | Event, reason?: SnackbarCloseReason ) => { if (reason === "clickaway") { return; } setOpen(false); setInfo(null); }; useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if ( dropdownRef.current && !dropdownRef.current.contains(event.target as Node) && buttonRef.current && !buttonRef.current.contains(event.target as Node) ) { setOpenDropdown(false); } }; document.addEventListener("click", handleClickOutside); return () => { document.removeEventListener("click", handleClickOutside); }; }, []); // // Fetch avatar on userInfo change // useEffect(() => { // if (userInfo?.name) { // getAvatar(); // } // }, [userInfo]); return ( Balance: {qortBalance} QORT |{" "} {ltcBalance === null ? "N/A" : ltcBalance} LTC {userInfo?.name ? ( {userInfo?.name} ) : userInfo?.address ? ( {cropAddress(userInfo?.address)} ) : null} {userInfo?.name ? ( {userInfo?.name?.charAt(0)?.toUpperCase()} ) : userInfo?.address ? ( ) : ( { window.open("https://www.qortal.dev", "_blank")?.focus(); }} /> )} } label="Is using Gateway" /> {info?.message} ); };