import { EventKind, HexKey, NostrLink, NostrPrefix } from "@snort/system";
import { useMemo } from "react";
import { FormattedMessage } from "react-intl";
import { Note } from "@/Components/Event/Note/Note";
import Zap from "@/Components/Event/Zap";
import Timeline from "@/Components/Feed/Timeline";
import RelaysMetadata from "@/Components/Relay/RelaysMetadata";
import Bookmarks from "@/Components/User/Bookmarks";
import FollowsList from "@/Components/User/FollowListBase";
import useFollowersFeed from "@/Feed/FollowersFeed";
import useFollowsFeed from "@/Feed/FollowsFeed";
import useRelaysFeed from "@/Feed/RelaysFeed";
import { TimelineSubject } from "@/Feed/TimelineFeed";
import useZapsFeed from "@/Feed/ZapsFeed";
import { useBookmarkList, usePinList } from "@/Hooks/useLists";
import messages from "@/Pages/messages";
import { formatShort } from "@/Utils/Number";
export function ZapsProfileTab({ id }: { id: HexKey }) {
const zaps = useZapsFeed(new NostrLink(NostrPrefix.PublicKey, id));
const zapsTotal = zaps.reduce((acc, z) => acc + z.amount, 0);
return (
<>
{zaps.map(z => (
))}
>
);
}
export function FollowersTab({ id }: { id: HexKey }) {
const followers = useFollowersFeed(id);
return ;
}
export function FollowsTab({ id }: { id: HexKey }) {
const follows = useFollowsFeed(id);
return ;
}
export function RelaysTab({ id }: { id: HexKey }) {
const relays = useRelaysFeed(id);
return ;
}
export function BookMarksTab({ id }: { id: HexKey }) {
const bookmarks = useBookmarkList(id);
return ;
}
export function ReactionsTab({ id }: { id: HexKey }) {
const subject = useMemo(
() =>
({
type: "pubkey",
items: [id],
discriminator: `reactions:${id.slice(0, 12)}`,
kinds: [EventKind.Reaction],
}) as TimelineSubject,
[id],
);
return (
);
}
export function ProfileNotesTab({ id, relays, isMe }: { id: HexKey; relays?: Array; isMe: boolean }) {
const pinned = usePinList(id);
const options = useMemo(() => ({ showTime: false, showPinned: true, canUnpin: isMe }), [isMe]);
const subject = useMemo(
() =>
({
type: "pubkey",
items: [id],
discriminator: `profile:${id.slice(0, 12)}`,
relay: relays,
}) as TimelineSubject,
[id, relays],
);
return (
<>
{pinned
.filter(a => a.kind === EventKind.TextNote)
.map(n => {
return ;
})}
>
);
}