edit.tsx 1004 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import {t} from 'sentry/locale';
  2. import {ProjectId, Rule} from '../types';
  3. import ModalManager from './modalManager';
  4. type ModalManagerProps<T extends ProjectId> = ModalManager<T>['props'];
  5. type Props<T extends ProjectId> = Omit<
  6. ModalManagerProps<T>,
  7. 'title' | 'initialValues' | 'onGetNewRules'
  8. > & {
  9. rule: Rule;
  10. };
  11. const Edit = <T extends ProjectId>({savedRules, rule, ...props}: Props<T>) => {
  12. const handleGetNewRules = (
  13. values: Parameters<ModalManagerProps<T>['onGetNewRules']>[0]
  14. ) => {
  15. const updatedRule = {...values, id: rule.id};
  16. const newRules = savedRules.map(savedRule => {
  17. if (savedRule.id === updatedRule.id) {
  18. return updatedRule;
  19. }
  20. return savedRule;
  21. }) as Array<Rule>;
  22. return newRules;
  23. };
  24. return (
  25. <ModalManager
  26. {...props}
  27. savedRules={savedRules}
  28. title={t('Edit an advanced data scrubbing rule')}
  29. initialState={rule}
  30. onGetNewRules={handleGetNewRules}
  31. />
  32. );
  33. };
  34. export default Edit;