1234567891011121314151617181920212223242526272829303132333435 |
- 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<SentryAppInstallation[]>(
- [`/organizations/${organization.slug}/sentry-app-installations/`],
- {staleTime: Infinity}
- );
- useEffect(() => {
- if (installs) {
- SentryAppInstallationStore.load(installs);
- }
- }, [installs]);
- const {data: components} = useApiQuery<SentryAppComponent[]>(
- [`/organizations/${organization.slug}/sentry-app-components/`, {query: {projectId}}],
- {enabled: Boolean(projectId), staleTime: Infinity}
- );
- useEffect(() => {
- if (components) {
- SentryAppComponentsStore.loadComponents(components);
- }
- }, [components]);
- }
|