Properly translate errors in AddThreepid.ts
(#10432)
* Properly translate errors in AddThreepid.ts Part of https://github.com/vector-im/element-web/issues/9597 * Use translated message * Avoid returning undefined ever * More usage * Introduce UserFriendlyError * Use UserFriendlyError * Add more usage instead of normal error * Use types and translatedMessage * Fix lints * Update i18n although it's wrong * Use unknown for easier creation from try/catch * Use types * Use error types * Use types * Update i18n strings * Remove generic re-label of HTTPError See https://github.com/matrix-org/matrix-react-sdk/pull/10432#discussion_r1156468143 The HTTPError already has a good label and it isn't even translated if we re-label it here in this way generically Probably best to just remove in favor of thinking about a translations in general from the `matrix-js-sdk`, see https://github.com/matrix-org/matrix-js-sdk/issues/1309 * Make error message extraction generic * Update i18n strings * Add tests for email addresses * More consistent error logging to actually see error in logs * Consistent error handling * Any is okay because we have a fallback * Check error type * Use dedicated mockResolvedValue function See https://github.com/matrix-org/matrix-react-sdk/pull/10432#discussion_r1163344034
This commit is contained in:
parent
8f8b74b32c
commit
c1e7905ddc
9 changed files with 300 additions and 132 deletions
|
@ -27,9 +27,26 @@ limitations under the License.
|
|||
|
||||
import React from "react";
|
||||
|
||||
import { _t } from "../../../languageHandler";
|
||||
import { _t, UserFriendlyError } from "../../../languageHandler";
|
||||
import BaseDialog from "./BaseDialog";
|
||||
|
||||
/**
|
||||
* Get a user friendly error message string from a given error. Useful for the
|
||||
* `description` prop of the `ErrorDialog`
|
||||
* @param err Error object in question to extract a useful message from. To make it easy
|
||||
* to use with try/catch, this is typed as `any` because try/catch will type
|
||||
* the error as `unknown`. And in any case we can use the fallback message.
|
||||
* @param translatedFallbackMessage The fallback message to be used if the error doesn't have any message
|
||||
* @returns a user friendly error message string from a given error
|
||||
*/
|
||||
export function extractErrorMessageFromError(err: any, translatedFallbackMessage: string): string {
|
||||
return (
|
||||
(err instanceof UserFriendlyError && err.translatedMessage) ||
|
||||
(err instanceof Error && err.message) ||
|
||||
translatedFallbackMessage
|
||||
);
|
||||
}
|
||||
|
||||
interface IProps {
|
||||
onFinished: (success?: boolean) => void;
|
||||
title?: string;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue