Files
mattermost-mobile/app/utils/client_error.ts
Elias Nahum 7aa5bd0611 Update Dependencies and bug fixes (#7000)
* update dependencies

* update dependencies

* feedback review

* update @mattermost/react-native-turbo-mailer
2023-01-24 09:14:23 +02:00

41 lines
1.4 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {cleanUrlForLogging} from '@utils/url';
import type {IntlShape} from 'react-intl';
export class ClientError extends Error {
details: Error;
intl?: {defaultMessage?: string; id: string} | { defaultMessage?: string; id: string } | { id: string; defaultMessage?: string; values: any } | { id: string; defaultMessage?: string };
url: string;
server_error_id?: string | number;
status_code?: number;
constructor(baseUrl: string, data: ClientErrorProps) {
super(`${data.message}: ${cleanUrlForLogging(baseUrl, data.url)}`);
this.details = data.details;
this.intl = data.intl;
this.message = data.message;
this.server_error_id = data.server_error_id;
this.status_code = data.status_code;
this.url = data.url;
// Ensure message is treated as a property of this class when object spreading. Without this,
// copying the object by using `{...error}` would not include the message.
Object.defineProperty(this, 'message', {enumerable: true});
}
}
export const getErrorMessage = (error: Error | string, intl: IntlShape) => {
const intlError = error as ClientError;
if (intlError.intl) {
return intl.formatMessage(intlError.intl);
} else if (error instanceof Error) {
return error.message;
}
return error;
};