nostr-hooks
Version:
React hooks for developing Nostr clients
32 lines • 1.33 kB
JavaScript
import { useEffect } from 'react';
import { useSubscription } from '../../../hooks';
import { useNip29Store } from '../../../nip29/store';
const updateGroupAdmins = useNip29Store.getState().updateGroupAdmins;
export const useGroupAdmins = (relay, groupId) => {
const subId = relay && groupId ? `${relay}-${groupId}-admins` : undefined;
const admins = useNip29Store((state) => subId && groupId ? state.groups[subId]?.[groupId]?.admins : undefined);
const { events, isLoading, createSubscription } = useSubscription(subId);
useEffect(() => {
if (!relay || !groupId || !subId)
return;
const filters = [{ kinds: [39001], '#d': [groupId], limit: 1 }];
const relayUrls = [relay];
const onEvent = (event) => {
const admins = event
.getMatchingTags('p')
.filter((pTag) => pTag.length > 1)
.map((pTag) => ({
pubkey: pTag[1] || '',
roles: pTag.slice(2),
}));
updateGroupAdmins(subId, groupId, admins);
};
createSubscription({ filters, relayUrls, onEvent });
}, [subId, relay, groupId, createSubscription]);
return {
admins,
isLoadingAdmins: isLoading,
adminsEvents: events,
};
};
//# sourceMappingURL=index.js.map