import { EventKind } from "@snort/system"; import { useLogin } from "hooks/login"; import AsyncButton from "element/async-button"; import { Login, System } from "index"; import { FormattedMessage } from "react-intl"; export function LoggedInFollowButton({ tag, value }: { tag: "p" | "t"; value: string }) { const login = useLogin(); if (!login) return; const { tags, content, timestamp } = login.follows; const follows = tags.filter(t => t.at(0) === tag); const isFollowing = follows.find(t => t.at(1) === value); async function unfollow() { const pub = login?.publisher(); if (pub) { const newFollows = tags.filter(t => t.at(1) !== value); const ev = await pub.generic(eb => { eb.kind(EventKind.ContactList).content(content ?? ""); for (const t of newFollows) { eb.tag(t); } return eb; }); console.debug(ev); System.BroadcastEvent(ev); Login.setFollows(newFollows, content ?? "", ev.created_at); } } async function follow() { const pub = login?.publisher(); if (pub) { const newFollows = [...tags, [tag, value]]; const ev = await pub.generic(eb => { eb.kind(EventKind.ContactList).content(content ?? ""); for (const tag of newFollows) { eb.tag(tag); } return eb; }); console.debug(ev); System.BroadcastEvent(ev); Login.setFollows(newFollows, content ?? "", ev.created_at); } } return ( ); } export function FollowTagButton({ tag }: { tag: string }) { const login = useLogin(); return login?.pubkey ? : null; } export function FollowButton({ pubkey }: { pubkey: string }) { const login = useLogin(); return login?.pubkey ? : null; }