taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 9838505956eb5e4b5067258311b8d4482ef1a5ff
parent a6747a8af80bd9d2a44fc1eeea1cefbda9646536
Author: Sebastian <sebasjm@gmail.com>
Date:   Fri,  1 Nov 2024 12:36:36 -0300

support accepted response

Diffstat:
Mpackages/kyc-ui/src/Routing.tsx | 22+++++++++++++++-------
Mpackages/kyc-ui/src/pages/Start.tsx | 3+++
Mpackages/taler-util/src/http-client/exchange.ts | 12+++++++-----
3 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/packages/kyc-ui/src/Routing.tsx b/packages/kyc-ui/src/Routing.tsx @@ -14,7 +14,7 @@ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ -import { + import { Loading, urlPattern, useCurrentLocation, @@ -64,18 +64,26 @@ export function safeToURL(s: string | undefined): URL | undefined { const ACCESS_TOKEN_REGEX = new RegExp("[A-Z0-9]{52}") /** - * by how the exchange - * /kyc-spa/KXAFXEWM7E3EJSYD9GJ30FYK1C17AKZWV119ZJA3XGPBBMZFJ2C0 - * + * by how the exchange serves the SPA + * /kyc-spa/KXAFXEWM7E3EJSYD9GJ30FYK1C17AKZWV119ZJA3XGPBBMZFJ2C0#/start + * + * by how dev.mjs serves the SPA + * /app/?token=KXAFXEWM7E3EJSYD9GJ30FYK1C17AKZWV119ZJA3XGPBBMZFJ2C0#/start * @returns */ function getAccessTokenFromURL(): AccessToken | undefined { if (typeof window === "undefined") return undefined; const paths = window.location.pathname.split("/"); if (paths.length < 3) return undefined; - const res = paths[2] as AccessToken - if (!ACCESS_TOKEN_REGEX.test(res)) return undefined; - return res; + const path = paths[2] + if (path && ACCESS_TOKEN_REGEX.test(path)) { + return path as AccessToken; + } + const param = new URLSearchParams(window.location.search).get("token") + if (param && ACCESS_TOKEN_REGEX.test(param)) { + return param as AccessToken; + } + return undefined; } function PublicRounting(): VNode { diff --git a/packages/kyc-ui/src/pages/Start.tsx b/packages/kyc-ui/src/pages/Start.tsx @@ -67,6 +67,9 @@ function ShowReqList({ case HttpStatusCode.NoContent: { return <div> not requirements </div>; } + case HttpStatusCode.Accepted: { + return <div> accepted </div>; + } default: { assertUnreachable(result); } diff --git a/packages/taler-util/src/http-client/exchange.ts b/packages/taler-util/src/http-client/exchange.ts @@ -58,11 +58,7 @@ import { codecForKycProcessStartInformation, codecForLegitimizationNeededResponse, } from "../types-taler-exchange.js"; -import { - CacheEvictor, - addPaginationParams, - nullEvictor, -} from "./utils.js"; +import { CacheEvictor, addPaginationParams, nullEvictor } from "./utils.js"; import { TalerError } from "../errors.js"; import { TalerErrorCode } from "../taler-error-codes.js"; @@ -703,6 +699,12 @@ export class TalerExchangeHttpClient { switch (resp.status) { case HttpStatusCode.Ok: return opSuccessFromHttp(resp, codecForKycProcessClientInformation()); + case HttpStatusCode.Accepted: + return opKnownAlternativeFailure( + resp, + HttpStatusCode.Accepted, + codecForEmptyObject(), + ); case HttpStatusCode.NoContent: return opKnownAlternativeFailure( resp,