// Copyright (c) 2020-2021 Drew Lemmy // This file is part of TenebraWeb 2 under AGPL-3.0. // Full details: https://github.com/tmpim/TenebraWeb2/blob/master/LICENSE.txt import { TranslatedError } from "@utils/i18n"; import { APIError } from "@api"; import { ShowAuthFailedFn } from "@api/AuthFailed"; import { Wallet } from "@wallets"; export function handleTransactionError( onError: ((error: Error) => void) | undefined, showAuthFailed: ShowAuthFailedFn, err: Error, from?: Wallet ): void { // Construct a TranslatedError pre-keyed to sendTransaction const tErr = (key: string) => new TranslatedError("sendTransaction." + key); switch (err.message) { case "missing_parameter": case "invalid_parameter": switch ((err as APIError).parameter) { case "to": return onError?.(tErr("errorParameterTo")); case "amount": return onError?.(tErr("errorParameterAmount")); case "metadata": return onError?.(tErr("errorParameterMetadata")); } break; case "insufficient_funds": return onError?.(tErr("errorInsufficientFunds")); case "name_not_found": return onError?.(tErr("errorNameNotFound")); case "auth_failed": return showAuthFailed(from!); } // Pass through any other unknown errors onError?.(err); }