import "./ProfilePage.css"; import Nostrich from "../nostrich.jpg"; import { useEffect, useMemo, useState } from "react"; import { useSelector } from "react-redux"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faQrcode, faGear } from "@fortawesome/free-solid-svg-icons"; import { useNavigate, useParams } from "react-router-dom"; import useProfile from "../feed/ProfileFeed"; import FollowButton from "../element/FollowButton"; import { extractLnAddress, parseId } from "../Util"; import Timeline from "../element/Timeline"; import { extractLinks } from '../Text' import LNURLTip from "../element/LNURLTip"; import Nip05 from "../element/Nip05"; import Copy from "../element/Copy"; import ProfilePreview from "../element/ProfilePreview"; import FollowersList from "../element/FollowersList"; import FollowsList from "../element/FollowsList"; const ProfileTab = { Notes: 0, //Reactions: 1, Followers: 2, Follows: 3 }; export default function ProfilePage() { const params = useParams(); const navigate = useNavigate(); const id = useMemo(() => parseId(params.id), [params]); const user = useProfile(id); const loginPubKey = useSelector(s => s.login.publicKey); const follows = useSelector(s => s.login.follows); const isMe = loginPubKey === id; const [showLnQr, setShowLnQr] = useState(false); const [tab, setTab] = useState(ProfileTab.Notes); useEffect(() => { setTab(ProfileTab.Notes); }, [params]); function details() { const lnurl = extractLnAddress(user?.lud16 || user?.lud06 || ""); return ( <>

{user?.display_name || user?.name}

{user?.nip05 && }
{isMe ? (
navigate("/settings")}>
) : }

{extractLinks([user?.about])}

{user?.website && (
{user.website}
)} {lnurl ?
{lnurl}
setShowLnQr(true)}>
: null} setShowLnQr(false)} /> ) } function tabContent() { switch (tab) { case ProfileTab.Notes: return ; case ProfileTab.Follows: { if (isMe) { return ( <>

Following {follows.length}

{follows.map(a => )} ); } else { return ; } } case ProfileTab.Followers: { return } } return null; } return ( <>
{details()}
{ Object.entries(ProfileTab).map(([k, v]) => { return
setTab(v)}>{k}
} ) }
{tabContent()} ) }