import { ChatQueries } from "./queries"; import { Channel, useKeysQuery, useNostrFetchQuery } from "../nostr"; import { useGetCommunityChannelQuery } from "../api"; import { Kind } from "nostr-tools"; import { convertEvent } from "../nostr/utils/event-converter"; import { UseQueryResult } from "@tanstack/react-query"; import { useEffect } from "react"; /** * Get the community's channel information * @note it marked as any because select function changes return type * @see {@link ../mutations/create-community-chat.ts} */ export function useCommunityChannelQuery(community?: { name: string; }): UseQueryResult { const { data: communityChannel, refetch: refetchCommunityChannel } = useGetCommunityChannelQuery(community?.name); const { hasKeys } = useKeysQuery(); useEffect(() => { if (!communityChannel && community) { refetchCommunityChannel(); } }, [communityChannel, community]); return useNostrFetchQuery( [ChatQueries.COMMUNITY_CHANNEL, community?.name], [ { kinds: [Kind.ChannelCreation], ids: [communityChannel?.channel_id ?? ""], }, ], (events) => events .map((event) => convertEvent(event)) .filter((channel) => !!channel) as Channel[], { initialData: [], enabled: hasKeys && !!communityChannel?.channel_id, select: (channels) => channels?.[0], }, ); }