actions.tsx 874 B

123456789101112131415161718192021222324252627282930313233343536
  1. import {Client} from 'sentry/api';
  2. import {MetricRule, SavedMetricRule} from './types';
  3. function isSavedRule(rule: MetricRule): rule is SavedMetricRule {
  4. return !!rule.id;
  5. }
  6. /**
  7. * Add a new rule or update an existing rule
  8. *
  9. * @param api API Client
  10. * @param orgId Organization slug
  11. * @param rule Saved or Unsaved Metric Rule
  12. * @param query Query parameters for the request eg - referrer
  13. */
  14. export function addOrUpdateRule(
  15. api: Client,
  16. orgId: string,
  17. projectId: string,
  18. rule: MetricRule,
  19. query?: object | any
  20. ) {
  21. const isExisting = isSavedRule(rule);
  22. const endpoint = isExisting
  23. ? `/projects/${orgId}/${projectId}/alert-rules/${rule.id}/`
  24. : `/organizations/${orgId}/alert-rules/`;
  25. const method = isExisting ? 'PUT' : 'POST';
  26. return api.requestPromise(endpoint, {
  27. method,
  28. data: rule,
  29. query,
  30. includeAllArgs: true,
  31. });
  32. }