aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2023-01-11 15:26:07 -0300
committerSebastian <sebasjm@gmail.com>2023-01-11 15:30:14 -0300
commite87073d42a2f51405d1a1f6be27cb378b552dcdf (patch)
tree841e2b994eae7c91d58ffdbc81d8662e0bda90d7
parent335d22b12b3d8ed1a14d39bf8ca17faade9ca34c (diff)
downloadwallet-core-e87073d42a2f51405d1a1f6be27cb378b552dcdf.tar.xz
add kyc warning
-rw-r--r--packages/taler-wallet-webextension/src/wallet/ExchangeSelection/views.tsx19
-rw-r--r--packages/taler-wallet-webextension/src/wallet/Transaction.stories.tsx14
-rw-r--r--packages/taler-wallet-webextension/src/wallet/Transaction.tsx35
3 files changed, 58 insertions, 10 deletions
diff --git a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/views.tsx b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/views.tsx
index d01ce7ca0..fd5c0cfe3 100644
--- a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/views.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/views.tsx
@@ -19,6 +19,7 @@ import { styled } from "@linaria/react";
import { Fragment, h, VNode } from "preact";
import { useState } from "preact/hooks";
import { Amount } from "../../components/Amount.js";
+import { AlertView } from "../../components/CurrentAlerts.js";
import { ErrorMessage } from "../../components/ErrorMessage.js";
import { SelectList } from "../../components/SelectList.js";
import { Input, SvgIcon } from "../../components/styled/index.js";
@@ -144,11 +145,23 @@ export function NoExchangesView({
}: SelectExchangeState.NoExchange): VNode {
const { i18n } = useTranslationContext();
if (!currency) {
- return <ErrorMessage title={i18n.str`Could not find any exchange`} />;
+ return (
+ <AlertView
+ alert={{
+ type: "warning",
+ message: i18n.str`Could not find any exchange `,
+ description: i18n.str`You are trying to withdraw coins but there is no exchange and the bank didn't suggested one.`,
+ }}
+ />
+ );
}
return (
- <ErrorMessage
- title={i18n.str`Could not find any exchange for the currency ${currency}`}
+ <AlertView
+ alert={{
+ type: "warning",
+ message: i18n.str`Could not find any exchange `,
+ description: i18n.str`You are trying to withdraw coins for the currency ${currency} but there is no exchange registered in this wallet and the bank didn't suggested one.`,
+ }}
/>
);
}
diff --git a/packages/taler-wallet-webextension/src/wallet/Transaction.stories.tsx b/packages/taler-wallet-webextension/src/wallet/Transaction.stories.tsx
index cc2ed9013..f2ebb3919 100644
--- a/packages/taler-wallet-webextension/src/wallet/Transaction.stories.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/Transaction.stories.tsx
@@ -221,6 +221,14 @@ const transactionError = {
message: "Unexpected error code in response",
};
+const kycError = {
+ code: 7025,
+ hint: "KYC check required for withdrawal",
+ kycUrl:
+ "http://localhost:6666/oauth/v2/login?client_id=taler-exchange&redirect_uri=http%3A%2F%2Flocalhost%3A8081%2F%2Fkyc-proof%2F59WFS5VXXY3CEE25BM45XPB7ZCDQZNZ46PJCMNXK05P65T9M1X90%2FKYC-PROVIDER-MYPROV%2F1",
+ when: AbsoluteTime.now(),
+};
+
export const Withdraw = tests.createExample(TestedComponent, {
transaction: exampleData.withdraw,
});
@@ -257,6 +265,12 @@ export const WithdrawError = tests.createExample(TestedComponent, {
},
});
+export const WithdrawErrorKYC = tests.createExample(TestedComponent, {
+ transaction: {
+ ...exampleData.withdraw,
+ error: kycError,
+ },
+});
// export const WithdrawErrorInDevMode = tests.createExampleInCustomContext(
// TestedComponent,
// {
diff --git a/packages/taler-wallet-webextension/src/wallet/Transaction.tsx b/packages/taler-wallet-webextension/src/wallet/Transaction.tsx
index f22f3b4ee..c6fa9ec68 100644
--- a/packages/taler-wallet-webextension/src/wallet/Transaction.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/Transaction.tsx
@@ -44,7 +44,7 @@ import emptyImg from "../../static/img/empty.png";
import { Amount } from "../components/Amount.js";
import { BankDetailsByPaytoType } from "../components/BankDetailsByPaytoType.js";
import { CopyButton } from "../components/CopyButton.js";
-import { ErrorAlertView } from "../components/CurrentAlerts.js";
+import { AlertView, ErrorAlertView } from "../components/CurrentAlerts.js";
import { Loading } from "../components/Loading.js";
import { Kind, Part, PartCollapsible, PartPayto } from "../components/Part.js";
import { QR } from "../components/QR.js";
@@ -199,12 +199,33 @@ export function TransactionView({
<Fragment>
<section style={{ padding: 8, textAlign: "center" }}>
{transaction?.error ? (
- <ErrorAlertView
- error={alertFromError(
- i18n.str`There was an error trying to complete the transaction`,
- transaction.error,
- )}
- />
+ transaction.error.code === 7025 ? (
+ <AlertView
+ alert={{
+ type: "warning",
+ message: i18n.str`KYC check required for the transaction to complete`,
+ description:
+ transaction.error.kycUrl &&
+ typeof transaction.error.kycUrl === "string" ? (
+ <div>
+ <i18n.Translate>
+ Follow this link to the{` `}
+ <a href={transaction.error.kycUrl}>KYC verifier</a>
+ </i18n.Translate>
+ </div>
+ ) : (
+ i18n.str`No more information has been provided`
+ ),
+ }}
+ />
+ ) : (
+ <ErrorAlertView
+ error={alertFromError(
+ i18n.str`There was an error trying to complete the transaction`,
+ transaction.error,
+ )}
+ />
+ )
) : undefined}
{transaction.pending && (
<WarningBox>