handleXhrErrorResponse.tsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import {t} from 'sentry/locale';
  2. type Error = {
  3. message: string;
  4. type:
  5. | 'unknown'
  6. | 'bad-structure'
  7. | 'missing-name'
  8. | 'empty-name'
  9. | 'missing-key'
  10. | 'invalid-key'
  11. | 'duplicated-key';
  12. };
  13. type XhrError = {
  14. responseJSON?: {
  15. trustedRelays: Array<string>;
  16. };
  17. };
  18. function handleError(error: XhrError): Error {
  19. const errorMessage = error.responseJSON?.trustedRelays[0];
  20. if (!errorMessage) {
  21. return {
  22. type: 'unknown',
  23. message: t('An unknown error occurred while saving Relay public key.'),
  24. };
  25. }
  26. if (errorMessage === 'Bad structure received for Trusted Relays') {
  27. return {
  28. type: 'bad-structure',
  29. message: t('An invalid structure was sent.'),
  30. };
  31. }
  32. if (errorMessage === 'Relay key info with missing name in Trusted Relays') {
  33. return {
  34. type: 'missing-name',
  35. message: t('Field Required'),
  36. };
  37. }
  38. if (errorMessage === 'Relay key info with empty name in Trusted Relays') {
  39. return {
  40. type: 'empty-name',
  41. message: t('Invalid Field'),
  42. };
  43. }
  44. if (errorMessage.startsWith('Missing public key for Relay key info with name:')) {
  45. return {
  46. type: 'missing-key',
  47. message: t('Field Required'),
  48. };
  49. }
  50. if (errorMessage.startsWith('Invalid public key for relay key info with name:')) {
  51. return {
  52. type: 'invalid-key',
  53. message: t('Invalid Relay key'),
  54. };
  55. }
  56. if (errorMessage.startsWith('Duplicated key in Trusted Relays:')) {
  57. return {
  58. type: 'duplicated-key',
  59. message: t('Relay key already taken'),
  60. };
  61. }
  62. return {
  63. type: 'unknown',
  64. message: t('An unknown error occurred while saving Relay public key.'),
  65. };
  66. }
  67. export default handleError;