useAggregateFlamegraphQuery.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import {useMemo} from 'react';
  2. import {normalizeDateTimeParams} from 'sentry/components/organizations/pageFilters/parse';
  3. import {PageFilters} from 'sentry/types';
  4. import {useApiQuery} from 'sentry/utils/queryClient';
  5. import {MutableSearch} from 'sentry/utils/tokenizeSearch';
  6. import useOrganization from 'sentry/utils/useOrganization';
  7. export function useAggregateFlamegraphQuery({
  8. projects,
  9. datetime,
  10. environments,
  11. transaction,
  12. }: {
  13. datetime: Partial<PageFilters['datetime']>;
  14. environments: string[];
  15. projects: number[];
  16. transaction: string;
  17. }) {
  18. const organization = useOrganization();
  19. const path = `/organizations/${organization.slug}/profiling/flamegraph/`;
  20. const query = useMemo(() => {
  21. // TODO: this should contain the user query
  22. // wait util we fully switch over to the transactions dataset
  23. const conditions = new MutableSearch([]);
  24. conditions.setFilterValues('transaction', [transaction]);
  25. return conditions.formatString();
  26. }, [transaction]);
  27. const enabled = !!transaction && Array.isArray(projects) && projects.length > 0;
  28. const endpointOptions = {
  29. query: {
  30. project: projects,
  31. environment: environments,
  32. ...normalizeDateTimeParams(datetime),
  33. query,
  34. },
  35. };
  36. return useApiQuery<Profiling.Schema>([path, endpointOptions], {
  37. staleTime: 0,
  38. retry: false,
  39. enabled,
  40. });
  41. }