taler-typescript-core

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

commit 921eadd6348812a138fbdd716524af5b23ac6b72
parent 2f287ba08f59c64e370a1ffa12d3551cec3e01a1
Author: Sebastian <sebasjm@gmail.com>
Date:   Sat,  1 Mar 2025 18:55:17 -0300

fix rare compilation error:

src/Routing.tsx:47:14 - error TS2742: The inferred type of 'publicPages' cannot be named without a reference to '../node_modules/@gnu-taler/web-util/src/index.browser.js'. This is likely not portable. A type annotation is necessary.

Diffstat:
Mpackages/bank-ui/src/Routing.tsx | 8+++++---
Mpackages/bank-ui/src/pages/BankFrame.tsx | 10++++++----
Mpackages/kyc-ui/src/Routing.tsx | 12++++++++++--
Mpackages/kyc-ui/src/pages/Frame.tsx | 18+++++++++++++-----
4 files changed, 34 insertions(+), 14 deletions(-)

diff --git a/packages/bank-ui/src/Routing.tsx b/packages/bank-ui/src/Routing.tsx @@ -16,6 +16,7 @@ import { LocalNotificationBanner, + RouteDefinition, urlPattern, useBankCoreApiContext, useCurrentLocation, @@ -122,10 +123,11 @@ export function Routing(): VNode { }, [refreshSession]); if (session.state.status === "loggedIn") { - const { isUserAdministrator, username, expiration } = session.state; + const { isUserAdministrator, username } = session.state; return ( <BankFrame account={username} + routeNotifications={privatePages.notifications} routeAccountDetails={privatePages.myAccountDetails} > <PrivateRouting username={username} isAdmin={isUserAdministrator} /> @@ -133,7 +135,7 @@ export function Routing(): VNode { ); } return ( - <BankFrame> + <BankFrame routeNotifications={privatePages.notifications}> <PublicRounting onLoggedUser={(username, token, expiration) => { session.logIn({ username, token, expiration }); @@ -266,7 +268,7 @@ function PublicRounting({ } } -export const privatePages = { +const privatePages = { homeChargeWallet: urlPattern( /\/account\/charge-wallet/, () => "#/account/charge-wallet", diff --git a/packages/bank-ui/src/pages/BankFrame.tsx b/packages/bank-ui/src/pages/BankFrame.tsx @@ -35,7 +35,6 @@ import { } from "@gnu-taler/web-util/browser"; import { ComponentChildren, Fragment, VNode, h } from "preact"; import { useEffect, useErrorBoundary, useState } from "preact/hooks"; -import { privatePages } from "../Routing.js"; import { useSettingsContext } from "../context/settings.js"; import { useAccountDetails } from "../hooks/account.js"; import { useBankState } from "../hooks/bank-state.js"; @@ -57,9 +56,11 @@ export function BankFrame({ children, account, routeAccountDetails, + routeNotifications, }: { account?: string; routeAccountDetails?: RouteDefinition; + routeNotifications?: RouteDefinition; children: ComponentChildren; }): VNode { const { i18n } = useTranslationContext(); @@ -99,8 +100,8 @@ export function BankFrame({ iconLinkURL={settings.iconLinkURL ?? "#"} profileURL={routeAccountDetails?.url({})} notificationURL={ - preferences.showDebugInfo - ? privatePages.notifications.url({}) + preferences.showDebugInfo && routeNotifications + ? routeNotifications.url({}) : undefined } onLogout={ @@ -109,7 +110,8 @@ export function BankFrame({ : () => { if (session.state.status === "loggedIn" && authenticator) { // FIXME: This returns a promise, should await on it! - authenticator.deleteAccessToken(session.state.username, + authenticator.deleteAccessToken( + session.state.username, session.state.token, ); } diff --git a/packages/kyc-ui/src/Routing.tsx b/packages/kyc-ui/src/Routing.tsx @@ -35,13 +35,21 @@ export function Routing(): VNode { // check session and defined if this is // public routing or private return ( - <Frame> + <Frame + routeTestForms={publicPages.triggerForm} + routeTestKyc={publicPages.triggerKyc} + > <PublicRounting /> </Frame> ); } -export const publicPages = { +/** + * FIXME: Exporting this constant make typescript throw an error + * + * src/Routing.tsx:47:14 - error TS2742: The inferred type of 'publicPages' cannot be named without a reference to '../node_modules/@gnu-taler/web-util/src/index.browser.js'. This is likely not portable. A type annotation is necessary. + */ +const publicPages = { completed: urlPattern(/\/completed/, () => `#/completed`), start: urlPattern(/\/start/, () => `#/start`), triggerKyc: urlPattern(/\/test\/trigger-kyc/, () => `#/test/trigger-kyc`), diff --git a/packages/kyc-ui/src/pages/Frame.tsx b/packages/kyc-ui/src/pages/Frame.tsx @@ -18,6 +18,7 @@ import { TranslatedString } from "@gnu-taler/taler-util"; import { Footer, Header, + RouteDefinition, ToastBanner, notifyError, notifyException, @@ -31,7 +32,6 @@ import { usePreferences, } from "../context/preferences.js"; import { useSettingsContext } from "../context/settings.js"; -import { publicPages } from "../Routing.js"; import { useNotifierContext } from "../context/notifier.js"; const TALER_SCREEN_ID = 108; @@ -39,7 +39,15 @@ const TALER_SCREEN_ID = 108; const GIT_HASH = typeof __GIT_HASH__ !== "undefined" ? __GIT_HASH__ : undefined; const VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : undefined; -export function Frame({ children }: { children: ComponentChildren }): VNode { +export function Frame({ + children, + routeTestForms, + routeTestKyc, +}: { + routeTestKyc?: RouteDefinition; + routeTestForms?: RouteDefinition; + children: ComponentChildren; +}): VNode { const settings = useSettingsContext(); const [preferences, updatePreferences] = usePreferences(); const [title, setTitle] = useState<string>(); @@ -79,11 +87,11 @@ export function Frame({ children }: { children: ComponentChildren }): VNode { onLogout={undefined} iconLinkURL="#" sites={ - !preferences.showDebugInfo + !preferences.showDebugInfo || !routeTestKyc || !routeTestForms ? [] : [ - ["Test kyc", publicPages.triggerKyc.url({})], - ["Test Forms", publicPages.triggerForm.url({})], + ["Test kyc", routeTestKyc.url({})], + ["Test Forms", routeTestForms.url({})], ] } >