policyRevisionModal.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import type {ModalRenderProps} from 'sentry/actionCreators/modal';
  2. import JsonFormModal from 'admin/components/jsonFormModal';
  3. import {PolicyRevisionSchema} from 'admin/schemas/policies';
  4. import type {Policy, PolicyRevision} from 'getsentry/types';
  5. type Props = ModalRenderProps & {
  6. onSuccess: (revision: PolicyRevision) => void;
  7. policy: Policy;
  8. revision?: PolicyRevision;
  9. };
  10. const suggestedNextVersion = (version: string): string => {
  11. const v = version.split('.');
  12. v[1] = parseInt(v[1]!, 10) + 1 + '';
  13. return v.join('.');
  14. };
  15. function PolicyRevisionModal({policy, revision, ...props}: Props) {
  16. return (
  17. <JsonFormModal
  18. title={revision ? `Edit ${revision.version}` : 'Add Revision'}
  19. initialData={
  20. revision || {
  21. version: policy.version ? suggestedNextVersion(policy.version) : '1.0.0',
  22. current: true,
  23. }
  24. }
  25. apiMethod={revision ? 'PUT' : 'POST'}
  26. apiEndpoint={
  27. revision
  28. ? `/policies/${policy.slug}/revisions/${revision.version}/`
  29. : `/policies/${policy.slug}/revisions/`
  30. }
  31. fields={PolicyRevisionSchema}
  32. {...props}
  33. />
  34. );
  35. }
  36. export default PolicyRevisionModal;