aboutsummaryrefslogtreecommitdiff
path: root/packages/auditor-backoffice-ui/src/paths/instance/kyc/list
diff options
context:
space:
mode:
Diffstat (limited to 'packages/auditor-backoffice-ui/src/paths/instance/kyc/list')
-rw-r--r--packages/auditor-backoffice-ui/src/paths/instance/kyc/list/ListPage.stories.tsx58
-rw-r--r--packages/auditor-backoffice-ui/src/paths/instance/kyc/list/ListPage.tsx208
-rw-r--r--packages/auditor-backoffice-ui/src/paths/instance/kyc/list/index.tsx63
3 files changed, 0 insertions, 329 deletions
diff --git a/packages/auditor-backoffice-ui/src/paths/instance/kyc/list/ListPage.stories.tsx b/packages/auditor-backoffice-ui/src/paths/instance/kyc/list/ListPage.stories.tsx
deleted file mode 100644
index a914639e5..000000000
--- a/packages/auditor-backoffice-ui/src/paths/instance/kyc/list/ListPage.stories.tsx
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- This file is part of GNU Taler
- (C) 2021-2024 Taler Systems S.A.
-
- GNU Taler is free software; you can redistribute it and/or modify it under the
- terms of the GNU General Public License as published by the Free Software
- Foundation; either version 3, or (at your option) any later version.
-
- GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along with
- GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
- */
-
-/**
- *
- * @author Sebastian Javier Marchano (sebasjm)
- */
-
-import { h, VNode, FunctionalComponent } from "preact";
-import { ListPage as TestedComponent } from "./ListPage.js";
-import * as tests from "@gnu-taler/web-util/testing";
-import { MerchantBackend } from "../../../../declaration.js";
-
-export default {
- title: "Pages/KYC/List",
- component: TestedComponent,
- argTypes: {
- onUpdate: { action: "onUpdate" },
- onBack: { action: "onBack" },
- },
-};
-
-export const Example = tests.createExample(TestedComponent, {
- status: {
- timeout_kycs: [],
- pending_kycs: [
- {
- aml_status: 0,
- exchange_url: "http://exchange.taler",
- payto_uri: "payto://iban/de123123123",
- kyc_url: "http://exchange.taler/kyc",
- },
- {
- aml_status: 1,
- exchange_url: "http://exchange.taler",
- payto_uri: "payto://iban/de123123123",
- },
- {
- aml_status: 2,
- exchange_url: "http://exchange.taler",
- payto_uri: "payto://iban/de123123123",
- },
- ],
- } as MerchantBackend.KYC.AccountKycRedirects,
-});
diff --git a/packages/auditor-backoffice-ui/src/paths/instance/kyc/list/ListPage.tsx b/packages/auditor-backoffice-ui/src/paths/instance/kyc/list/ListPage.tsx
deleted file mode 100644
index 2ec0137d9..000000000
--- a/packages/auditor-backoffice-ui/src/paths/instance/kyc/list/ListPage.tsx
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- This file is part of GNU Taler
- (C) 2021-2024 Taler Systems S.A.
-
- GNU Taler is free software; you can redistribute it and/or modify it under the
- terms of the GNU General Public License as published by the Free Software
- Foundation; either version 3, or (at your option) any later version.
-
- GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along with
- GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
- */
-
-/**
- *
- * @author Sebastian Javier Marchano (sebasjm)
- */
-
-import { useTranslationContext } from "@gnu-taler/web-util/browser";
-import { h, VNode } from "preact";
-import { MerchantBackend } from "../../../../declaration.js";
-
-export interface Props {
- status: MerchantBackend.KYC.AccountKycRedirects;
-}
-
-export function ListPage({ status }: Props): VNode {
- const { i18n } = useTranslationContext();
-
- return (
- <section class="section is-main-section">
- <div class="card has-table">
- <header class="card-header">
- <p class="card-header-title">
- <span class="icon">
- <i class="mdi mdi-clock" />
- </span>
- <i18n.Translate>Pending KYC verification</i18n.Translate>
- </p>
-
- <div class="card-header-icon" aria-label="more options" />
- </header>
- <div class="card-content">
- <div class="b-table has-pagination">
- <div class="table-wrapper has-mobile-cards">
- {status.pending_kycs.length > 0 ? (
- <PendingTable entries={status.pending_kycs} />
- ) : (
- <EmptyTable />
- )}
- </div>
- </div>
- </div>
- </div>
-
- {status.timeout_kycs.length > 0 ? (
- <div class="card has-table">
- <header class="card-header">
- <p class="card-header-title">
- <span class="icon">
- <i class="mdi mdi-clock" />
- </span>
- <i18n.Translate>Timed out</i18n.Translate>
- </p>
-
- <div class="card-header-icon" aria-label="more options" />
- </header>
- <div class="card-content">
- <div class="b-table has-pagination">
- <div class="table-wrapper has-mobile-cards">
- {status.timeout_kycs.length > 0 ? (
- <TimedOutTable entries={status.timeout_kycs} />
- ) : (
- <EmptyTable />
- )}
- </div>
- </div>
- </div>
- </div>
- ) : undefined}
- </section>
- );
-}
-interface PendingTableProps {
- entries: MerchantBackend.KYC.MerchantAccountKycRedirect[];
-}
-
-interface TimedOutTableProps {
- entries: MerchantBackend.KYC.ExchangeKycTimeout[];
-}
-
-function PendingTable({ entries }: PendingTableProps): VNode {
- const { i18n } = useTranslationContext();
- return (
- <div class="table-container">
- <table class="table is-striped is-hoverable is-fullwidth">
- <thead>
- <tr>
- <th>
- <i18n.Translate>Exchange</i18n.Translate>
- </th>
- <th>
- <i18n.Translate>Target account</i18n.Translate>
- </th>
- <th>
- <i18n.Translate>Reason</i18n.Translate>
- </th>
- </tr>
- </thead>
- <tbody>
- {entries.map((e, i) => {
- if (e.kyc_url === undefined) {
- // blocked by AML
- return (
- <tr key={i}>
- <td>{e.exchange_url}</td>
- <td>{e.payto_uri}</td>
- <td>
- {e.aml_status === 1 ? (
- <i18n.Translate>
- There is an anti-money laundering process pending to
- complete.
- </i18n.Translate>
- ) : (
- <i18n.Translate>
- The account is frozen due to the anti-money laundering
- rules. Contact the exchange service provider for further
- instructions.
- </i18n.Translate>
- )}
- </td>
- </tr>
- );
- } else {
- // blocked by KYC
- return (
- <tr key={i}>
- <td>{e.exchange_url}</td>
- <td>{e.payto_uri}</td>
- <td>
- <a href={e.kyc_url} target="_black" rel="noreferrer">
- <i18n.Translate>
- Pending KYC process, click here to complete
- </i18n.Translate>
- </a>
- </td>
- </tr>
- );
- }
- })}
- </tbody>
- </table>
- </div>
- );
-}
-
-function TimedOutTable({ entries }: TimedOutTableProps): VNode {
- const { i18n } = useTranslationContext();
- return (
- <div class="table-container">
- <table class="table is-striped is-hoverable is-fullwidth">
- <thead>
- <tr>
- <th>
- <i18n.Translate>Exchange</i18n.Translate>
- </th>
- <th>
- <i18n.Translate>Code</i18n.Translate>
- </th>
- <th>
- <i18n.Translate>Http Status</i18n.Translate>
- </th>
- </tr>
- </thead>
- <tbody>
- {entries.map((e, i) => {
- return (
- <tr key={i}>
- <td>{e.exchange_url}</td>
- <td>{e.exchange_code}</td>
- <td>{e.exchange_http_status}</td>
- </tr>
- );
- })}
- </tbody>
- </table>
- </div>
- );
-}
-
-function EmptyTable(): VNode {
- const { i18n } = useTranslationContext();
- return (
- <div class="content has-text-grey has-text-centered">
- <p>
- <span class="icon is-large">
- <i class="mdi mdi-emoticon-happy mdi-48px" />
- </span>
- </p>
- <p>
- <i18n.Translate>No pending kyc verification!</i18n.Translate>
- </p>
- </div>
- );
-}
diff --git a/packages/auditor-backoffice-ui/src/paths/instance/kyc/list/index.tsx b/packages/auditor-backoffice-ui/src/paths/instance/kyc/list/index.tsx
deleted file mode 100644
index 664f05f66..000000000
--- a/packages/auditor-backoffice-ui/src/paths/instance/kyc/list/index.tsx
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- This file is part of GNU Taler
- (C) 2021-2024 Taler Systems S.A.
-
- GNU Taler is free software; you can redistribute it and/or modify it under the
- terms of the GNU General Public License as published by the Free Software
- Foundation; either version 3, or (at your option) any later version.
-
- GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along with
- GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
- */
-
-/**
- *
- * @author Sebastian Javier Marchano (sebasjm)
- */
-
-import { ErrorType, HttpError } from "@gnu-taler/web-util/browser";
-import { h, VNode } from "preact";
-import { Loading } from "../../../../components/exception/loading.js";
-import { MerchantBackend } from "../../../../declaration.js";
-import { useInstanceKYCDetails } from "../../../../hooks/instance.js";
-import { ListPage } from "./ListPage.js";
-import { HttpStatusCode } from "@gnu-taler/taler-util";
-
-interface Props {
- onUnauthorized: () => VNode;
- onLoadError: (error: HttpError<MerchantBackend.ErrorDetail>) => VNode;
- onNotFound: () => VNode;
-}
-
-export default function ListKYC({
- onUnauthorized,
- onLoadError,
- onNotFound,
-}: Props): VNode {
- const result = useInstanceKYCDetails();
- if (result.loading) return <Loading />;
- if (!result.ok) {
- if (
- result.type === ErrorType.CLIENT &&
- result.status === HttpStatusCode.Unauthorized
- )
- return onUnauthorized();
- if (
- result.type === ErrorType.CLIENT &&
- result.status === HttpStatusCode.NotFound
- )
- return onNotFound();
- return onLoadError(result);
- }
-
- const status = result.data.type === "ok" ? undefined : result.data.status;
-
- if (!status) {
- return <div>no kyc required</div>;
- }
- return <ListPage status={status} />;
-}