deleteButton.tsx 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import * as Sentry from '@sentry/react';
  2. import {addErrorMessage} from 'sentry/actionCreators/indicator';
  3. import Button from 'sentry/components/button';
  4. import {IconDelete} from 'sentry/icons';
  5. import {t} from 'sentry/locale';
  6. import useApi from 'sentry/utils/useApi';
  7. import {useRouteContext} from 'sentry/utils/useRouteContext';
  8. function DeleteButton() {
  9. const api = useApi();
  10. const {params, router} = useRouteContext();
  11. const orgSlug = params.orgId;
  12. const [projectSlug, replayId] = params.replaySlug.split(':');
  13. const handleDelete = async () => {
  14. try {
  15. await api.requestPromise(
  16. `/projects/${orgSlug}/${projectSlug}/replays/${replayId}/`,
  17. {
  18. method: 'DELETE',
  19. }
  20. );
  21. router.replace(`/organizations/${orgSlug}/replays/`);
  22. } catch (err) {
  23. addErrorMessage(t('Failed to delete replay'));
  24. Sentry.captureException(err);
  25. }
  26. };
  27. return (
  28. <Button size="xs" icon={<IconDelete size="xs" />} onClick={handleDelete}>
  29. {t('Delete')}
  30. </Button>
  31. );
  32. }
  33. export default DeleteButton;