import React from 'react'; import { useNostrEvents, useProfile } from "nostr-react"; import { Card, CardHeader, CardTitle, CardContent, CardFooter, CardDescription } from '@/components/ui/card'; import { Skeleton } from '@/components/ui/skeleton'; import { AvatarImage } from '@radix-ui/react-avatar'; import { Avatar } from '@/components/ui/avatar'; import NIP05 from '@/components/nip05'; import { RecentFollowerCard } from './RecentFollowerCard'; import { nip19, } from "nostr-tools"; import { RecentZapsCard } from './RecentZapsCard'; interface ProfileInfoCardProps { pubkey: string; } const ProfileInfoCard: React.FC = ({ pubkey }) => { const { data: userData, isLoading: userDataLoading } = useProfile({ pubkey, }); const { events: followers, isLoading: followersLoading } = useNostrEvents({ filter: { kinds: [3], '#p': [pubkey], }, }); const { events: zaps, isLoading: zapsLoading } = useNostrEvents({ filter: { kinds: [9735], '#p': [pubkey], limit: 50, }, }); const { events: following, isLoading: followingLoading } = useNostrEvents({ filter: { kinds: [3], authors: [pubkey], limit: 1, }, }); // filter for only new followings (latest in a users followers list) const filteredFollowers = followers.filter(follower => { const lastPTag = follower.tags[follower.tags.length - 1]; if (lastPTag[0] === "p" && lastPTag[1] === pubkey.toString()) { // console.log(follower.tags[follower.tags.length - 1]); return true; } }); let encoded = nip19.npubEncode(pubkey); let parts = encoded.split('npub'); let npubShortened = 'npub' + parts[1].slice(0, 4) + ':' + parts[1].slice(-3); const title = userData?.username || userData?.display_name || userData?.name || userData?.npub || npubShortened; const description = userData?.about?.replace(/(?:\r\n|\r|\n)/g, '
'); const nip05 = userData?.nip05 let profileImageSrc = userData?.picture || "https://robohash.org/" + pubkey; return ( <>
{/* */} {/* Profile */}

{title}

Total Followers
{followers.length}
{/*

+20.1% from last month

*/}
Total Following
{followingLoading ? "Loading.." : (following.length > 0 ? following[0]?.tags.length : "-")}
{/*

+20.1% from last month

*/}
); } export default ProfileInfoCard;