Files
2024-02-15 17:01:50 +00:00

83 lines
1.9 KiB
TypeScript

import {t} from 'sentry/locale';
import type RequestError from 'sentry/utils/requestError/requestError';
type TrustedRelaysResponseError = {
message: string;
type:
| 'unknown'
| 'bad-structure'
| 'missing-name'
| 'empty-name'
| 'missing-key'
| 'invalid-key'
| 'duplicated-key';
};
interface TrustedRelaysRequestError extends RequestError {
responseJSON?: {
trustedRelays: Array<string>;
};
}
function createTrustedRelaysResponseError(
error: TrustedRelaysRequestError
): TrustedRelaysResponseError {
const errorMessage = error.responseJSON?.trustedRelays[0];
if (!errorMessage) {
return {
type: 'unknown',
message: t('An unknown error occurred while saving Relay public key.'),
};
}
if (errorMessage === 'Bad structure received for Trusted Relays') {
return {
type: 'bad-structure',
message: t('An invalid structure was sent.'),
};
}
if (errorMessage === 'Relay key info with missing name in Trusted Relays') {
return {
type: 'missing-name',
message: t('Field Required'),
};
}
if (errorMessage === 'Relay key info with empty name in Trusted Relays') {
return {
type: 'empty-name',
message: t('Invalid Field'),
};
}
if (errorMessage.startsWith('Missing public key for Relay key info with name:')) {
return {
type: 'missing-key',
message: t('Field Required'),
};
}
if (errorMessage.startsWith('Invalid public key for relay key info with name:')) {
return {
type: 'invalid-key',
message: t('Invalid Relay key'),
};
}
if (errorMessage.startsWith('Duplicated key in Trusted Relays:')) {
return {
type: 'duplicated-key',
message: t('Relay key already taken'),
};
}
return {
type: 'unknown',
message: t('An unknown error occurred while saving Relay public key.'),
};
}
export default createTrustedRelaysResponseError;