// Copyright (c) 2020-2021 Drew Lemmy // This file is part of KristWeb 2 under GPL-3.0. // Full details: https://github.com/tmpim/KristWeb2/blob/master/LICENSE.txt import { notification } from "antd"; import { translateError, TFns } from "@utils/i18n"; import { APIError } from "@api"; import { AuthFailedError, ShowAuthFailedFn } from "@api/AuthFailed"; import { WalletAddressMap, Wallet } from "@wallets"; // Convert API errors to friendlier errors export async function handleEditError( { t, tKey, tStr, tErr }: TFns, showAuthFailed: ShowAuthFailedFn, walletAddressMap: WalletAddressMap, err: Error ): Promise<void> { const onError = (err: Error) => notification.error({ message: tStr("errorNotificationTitle"), description: translateError(t, err, tKey("errorUnknown")) }); switch (err.message) { case "missing_parameter": case "invalid_parameter": switch ((err as APIError).parameter) { case "name": return onError(tErr("errorParameterNames")); case "address": return onError(tErr("errorParameterRecipient")); case "a": return onError(tErr("errorParameterARecord")); } break; case "name_not_found": return onError(tErr("errorNameNotFound")); case "not_name_owner": return onError(tErr("errorNotNameOwner")); case "auth_failed": return showAuthFailed(walletAddressMap[(err as AuthFailedError).address!]); } // Pass through any other unknown errors console.error(err); onError(err); } export async function handlePurchaseError( { t, tKey, tStr, tErr }: TFns, showAuthFailed: ShowAuthFailedFn, wallet: Wallet, err: Error ): Promise<void> { const onError = (err: Error) => notification.error({ message: tStr("errorNotificationTitle"), description: translateError(t, err, tKey("errorUnknown")) }); switch (err.message) { case "missing_parameter": case "invalid_parameter": return onError(tErr("errorInvalidName")); case "name_taken": return onError(tErr("errorNameTaken")); case "insufficient_funds": return onError(tErr("errorInsufficientFunds")); case "auth_failed": return showAuthFailed(wallet); } // Pass through any other unknown errors console.error(err); onError(err); }