From 03176692e9c8521f523da2efc38eceacdf3c9154 Mon Sep 17 00:00:00 2001 From: koderholic <22542946+koderholic@users.noreply.github.com> Date: Thu, 20 Oct 2022 23:08:47 +0100 Subject: [PATCH] fix: support liquality errors - get liquality error message by using translation --- package.json | 1 + src/broker/Background.js | 11 +++++++++-- src/store/modules/app/replyPermission.js | 5 ++++- src/utils/liqualityErrors.js | 7 +++++++ src/utils/localization.js | 2 +- yarn.lock | 12 ++++++++++++ 6 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 src/utils/liqualityErrors.js diff --git a/package.json b/package.json index cdc709360..abf72eaf6 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ }, "dependencies": { "@liquality/cryptoassets": "1.16.2", + "@liquality/error-parser": "^1.1.3", "@liquality/ethereum-utils": "^1.13.12", "@liquality/terra-networks": "^1.13.12", "@liquality/types": "^1.13.12", diff --git a/src/broker/Background.js b/src/broker/Background.js index 742a4373f..33989079c 100644 --- a/src/broker/Background.js +++ b/src/broker/Background.js @@ -1,7 +1,9 @@ import { buildConfig } from '@liquality/wallet-core' import { BG_PREFIX, handleConnection, removeConnectId, getRootURL } from './utils' import { getChain } from '@liquality/cryptoassets' +import { LiqualityError } from '@liquality/error-parser' import { connectRemote } from './terra-injection' +import { translateLiqualityError } from '../utils/liqualityErrors' function attemptOrWarn(func, message) { try { @@ -155,7 +157,10 @@ class Background { .then((result) => ({ result })) .catch((error) => { console.error(error) - return { error: error.message } + return { + error: + error instanceof LiqualityError ? translateLiqualityError(error) : error.message + } }) .then((response) => attemptOrWarn( @@ -279,7 +284,9 @@ class Background { .then((result) => ({ result })) .catch((error) => { console.error(error) /* eslint-disable-line */ - return { error: error.toString() } + return { + error: error instanceof LiqualityError ? translateLiqualityError(error) : error.toString() + } }) .then((response) => { connection.postMessage({ diff --git a/src/store/modules/app/replyPermission.js b/src/store/modules/app/replyPermission.js index eb371b90a..842ea0bc4 100644 --- a/src/store/modules/app/replyPermission.js +++ b/src/store/modules/app/replyPermission.js @@ -1,3 +1,5 @@ +import { translateLiqualityError } from '../../../utils/liqualityErrors' +import { LiqualityError } from '@liquality/error-parser' import { emitter } from '../../utils' export const replyPermission = async ({ dispatch }, { request, allowed }) => { @@ -6,7 +8,8 @@ export const replyPermission = async ({ dispatch }, { request, allowed }) => { try { response.result = await dispatch('executeRequest', { request }) } catch (error) { - response.error = error.message + response.error = + error instanceof LiqualityError ? translateLiqualityError(error) : error.message } } diff --git a/src/utils/liqualityErrors.js b/src/utils/liqualityErrors.js new file mode 100644 index 000000000..fbefe2a3c --- /dev/null +++ b/src/utils/liqualityErrors.js @@ -0,0 +1,7 @@ +import { i18n } from './localization' + +export function translateLiqualityError(error) { + const cause = i18n.translate(error.causeKey, error.data) + const suggestions = i18n.translate(error.suggestionKey, error.data) + return `${cause} ${suggestions}` +} diff --git a/src/utils/localization.js b/src/utils/localization.js index f90bcf2ec..8d6022f9a 100644 --- a/src/utils/localization.js +++ b/src/utils/localization.js @@ -1,6 +1,6 @@ import { I18n } from 'i18n-js' -const i18n = new I18n() +export const i18n = new I18n() export const loadLocale = async (locale, namespaces = ['common', 'components', 'pages']) => { if (!i18n.translations[locale]) { diff --git a/yarn.lock b/yarn.lock index cef8a97f2..449e5cc11 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4369,6 +4369,17 @@ __metadata: languageName: node linkType: hard +"@liquality/error-parser@npm:^1.1.3": + version: 1.1.3 + resolution: "@liquality/error-parser@npm:1.1.3" + dependencies: + "@liquality/cryptoassets": 1.16.2 + "@liquality/wallet-core": 1.31.3 + randombytes: ^2.1.0 + checksum: ea781441bd48e1452ace4505c0405ace9243010d3c0ac94f1caf721d47de28bb08e6ac72efb1d12c64645548c8e5ee8593a330c6cd918ac92b54df7c8b8bb1a2 + languageName: node + linkType: hard + "@liquality/errors@npm:^1.13.12": version: 1.13.12 resolution: "@liquality/errors@npm:1.13.12" @@ -18845,6 +18856,7 @@ __metadata: resolution: "liquality-wallet@workspace:." dependencies: "@liquality/cryptoassets": 1.16.2 + "@liquality/error-parser": ^1.1.3 "@liquality/ethereum-utils": ^1.13.12 "@liquality/terra-networks": ^1.13.12 "@liquality/types": ^1.13.12