import {useEffect} from 'react'; import SentryAppComponentsStore from 'sentry/stores/sentryAppComponentsStore'; import SentryAppInstallationStore from 'sentry/stores/sentryAppInstallationsStore'; import type {SentryAppComponent, SentryAppInstallation} from 'sentry/types/integrations'; import {useApiQuery} from 'sentry/utils/queryClient'; import useOrganization from 'sentry/utils/useOrganization'; interface Props { projectId: string | undefined; } export default function useSentryAppComponentsData({projectId}: Props) { const organization = useOrganization(); const {data: installs} = useApiQuery( [`/organizations/${organization.slug}/sentry-app-installations/`], {staleTime: Infinity} ); useEffect(() => { if (installs) { SentryAppInstallationStore.load(installs); } }, [installs]); const {data: components} = useApiQuery( [`/organizations/${organization.slug}/sentry-app-components/`, {query: {projectId}}], {enabled: Boolean(projectId), staleTime: Infinity} ); useEffect(() => { if (components) { SentryAppComponentsStore.loadComponents(components); } }, [components]); }