import { useQuery } from '@tanstack/react-query'; import { useSkateRelays } from '@/hooks/useSkateRelays'; import type { NostrEvent } from '@nostrify/nostrify'; /** * Recent kind-1 notes from a crew's members — the "crew feed". * Keeps the crew page alive without any new event kinds. */ export function useCrewFeed(memberPubkeys: string[], limit = 30) { const { querySkateContent, getQueryKeySuffix } = useSkateRelays(); return useQuery({ queryKey: ['crew-feed', memberPubkeys.slice().sort().join(','), getQueryKeySuffix()], queryFn: async (): Promise => { if (memberPubkeys.length === 0) return []; const signal = AbortSignal.timeout(8000); const events = await querySkateContent( [ { kinds: [1], authors: memberPubkeys, limit, }, ], { signal } ); // Exclude replies — a crew feed reads better as top-level posts. const topLevel = events.filter( (e) => !e.tags.some(([name]) => name === 'e') ); return topLevel.sort((a, b) => b.created_at - a.created_at).slice(0, limit); }, enabled: memberPubkeys.length > 0, staleTime: 60 * 1000, }); }