migrationUi.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import {Organization} from 'sentry/types';
  2. import {useApiQuery} from 'sentry/utils/queryClient';
  3. import useOrganization from 'sentry/utils/useOrganization';
  4. import {Dataset, MetricRule} from 'sentry/views/alerts/rules/metric/types';
  5. import type {CombinedMetricIssueAlerts} from 'sentry/views/alerts/types';
  6. // TODO(telemetry-experience): remove when the migration is complete
  7. export const hasMigrationFeatureFlag = (organization: Organization): boolean =>
  8. organization.features.includes('alert-migration-ui');
  9. // TODO(telemetry-experience): remove when the migration is complete
  10. export const ruleNeedsMigration = (
  11. rule: CombinedMetricIssueAlerts | MetricRule
  12. ): boolean => {
  13. return 'dataset' in rule && rule.dataset === Dataset.TRANSACTIONS;
  14. };
  15. // TODO(telemetry-experience): remove when the migration is complete
  16. export function useOrgNeedsMigration(): boolean {
  17. const organization = useOrganization();
  18. const {data = []} = useApiQuery<CombinedMetricIssueAlerts[]>(
  19. [
  20. `/organizations/${organization.slug}/combined-rules/`,
  21. {query: {dataset: Dataset.TRANSACTIONS}},
  22. ],
  23. {staleTime: 0}
  24. );
  25. const hasTransactionAlerts = data.length > 0;
  26. const hasFeatureFlag = hasMigrationFeatureFlag(organization);
  27. return hasTransactionAlerts && hasFeatureFlag;
  28. }
  29. /**
  30. * Enable ignoring archived issues in metric alerts
  31. */
  32. export const hasIgnoreArchivedFeatureFlag = (organization: Organization): boolean =>
  33. organization.features.includes('metric-alert-ignore-archived');
  34. export const ruleNeedsErrorMigration = (rule: MetricRule): boolean => {
  35. return (
  36. 'dataset' in rule &&
  37. rule.dataset === Dataset.ERRORS &&
  38. 'query' in rule &&
  39. !rule.query.includes('is:unresolved')
  40. );
  41. };