Files
snort/packages/app/src/Feed/FollowersFeed.ts
2024-09-12 16:26:40 +01:00

27 lines
916 B
TypeScript

import { EventKind, HexKey, RequestBuilder, socialGraphInstance } from "@snort/system";
import { useRequestBuilder } from "@snort/system-react";
import { useMemo } from "react";
export default function useFollowersFeed(pubkey?: HexKey) {
const sub = useMemo(() => {
const b = new RequestBuilder(`followers`);
if (pubkey) {
b.withFilter().kinds([EventKind.ContactList]).tag("p", [pubkey]);
}
return b;
}, [pubkey]);
const followersFeed = useRequestBuilder(sub);
const followers = useMemo(() => {
const contactLists = followersFeed?.filter(
a => a.kind === EventKind.ContactList && a.tags.some(b => b[0] === "p" && b[1] === pubkey),
);
return [...new Set(contactLists?.map(a => a.pubkey))].sort((a, b) => {
return socialGraphInstance.getFollowDistance(a) - socialGraphInstance.getFollowDistance(b);
});
}, [followersFeed, pubkey]);
return followers;
}