31 lines
845 B
TypeScript
31 lines
845 B
TypeScript
import { unwrap } from "@snort/shared";
|
|
import { EventKind, parseNostrLink } from "@snort/system";
|
|
import { useEffect, useSyncExternalStore } from "react";
|
|
|
|
import { LeadersStore } from "@/Cache/CommunityLeadersStore";
|
|
|
|
import { useLinkList } from "./useLists";
|
|
|
|
export function useCommunityLeaders() {
|
|
const link = CONFIG.communityLeaders ? parseNostrLink(unwrap(CONFIG.communityLeaders).list) : undefined;
|
|
|
|
const list = useLinkList("leaders", rb => {
|
|
if (link) {
|
|
rb.withFilter().kinds([EventKind.FollowSet]).link(link);
|
|
}
|
|
});
|
|
|
|
useEffect(() => {
|
|
LeadersStore.setLeaders(list.map(a => a.id));
|
|
}, [list]);
|
|
}
|
|
|
|
export function useCommunityLeader(pubkey?: string) {
|
|
const store = useSyncExternalStore(
|
|
c => LeadersStore.hook(c),
|
|
() => LeadersStore.snapshot(),
|
|
);
|
|
|
|
return pubkey && store.includes(pubkey);
|
|
}
|